我有一个timestamp without time zone型的added_at栏.我希望它的默认值是当前日期时间,但不带时区.函数now()也返回时区.

我该如何解决这个问题?

推荐答案

SELECT now()::timestamp;

该cast将now()返回的timestamptz转换为您时区中相应的timestamp,该时区由会话的timezone设置定义.这也是standard SQL function LOCALTIMESTAMP在Postgres中的实现方式.

如果你不在多个时区工作,那就行了.否则换成timestamptz换成added_at.区别是什么?

顺便说一句,这也一样,只是噪音更大,价格更贵:

SELECT now() AT TIME ZONE current_setting('timezone');

Postgresql相关问答推荐

多克.波斯格雷斯.PgAdmin4

Postgres:创建分区需要很长时间

如何诊断字符编码问题

有没有办法共享数据或监控复杂 PostgresQL 事务的进度?

使用psql的copy语句时如何压缩数据?

如何在 sequelize 使用 db postgres 中通过外键更新记录和更新包含许多记录关系

Cloud SQL 时间点 数据驻留

新数据未保存到 Postgres 上的 Rails 数组列

PG::UndefinedTable:错误:relation "active_storage_blobs" does not exist

计算 PostgreSQL 中给定 GPS 坐标的日出和日落时间

如何将参数值添加到 pgadmin sql 查询?

如何使用 Node.js 和 Postgresql 找到最后一个插入 ID?

使用枚举与布尔值?

try 为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:no password supplied

如何将表的一列复制到PostgreSQL中比较相同ID的另一表的列

PostgreSQL:从转储中恢复数据库 - 语法错误

学习 PL/pgSQL 的好资源?

Postgresql 对象 ID 和元组

错误:索引表达式中的函数必须在 Postgres 中标记为 IMMUTABLE

如何为 adminpack 解决 PostgreSQL pgAdmin 错误Server instrumentation not installed?