【问题标题】:Insert current postgres server timestamp in jdbc在 jdbc 中插入当前 postgres 服务器时间戳
【发布时间】:2018-05-04 23:03:27
【问题描述】:

我有一个通过 JDBC 在 Postgres 数据库中插入的移动应用程序。在数据库表中,我有一个时间戳列,我需要插入服务器的真实时间戳,以确保没有人插入假日期/时间。它会是这样的:

INSERT INTO some_table VALUES(...,now());

这段代码看起来是对的,但如果移动设备有不同的时区,这种差异会反映在 now() 函数中。示例:

服务器日期/时间:00:00:00 -04

手机日期/时间:00:12:34 +00

上面插入的结果:04:00:00

我已经尝试了其他一些方法,例如:

INSERT INTO some_table VALUES(...,now()::timestamp)
INSERT INTO some_table VALUES(...,current_timestamp)

【问题讨论】:

  • 这似乎是驱动程序中的一个错误,它将时区始终设置为客户端的时区。

标签: sql postgresql jdbc timestamp


【解决方案1】:

如果您使用 UTC 时间戳来避免时区始终位于中间,那将是有意义的。让客户关心转换到当前时区。

试试这样:

INSERT INTO some_table VALUES(..., now() at time zone 'utc')

来源:Using current time in UTC as default value in PostgreSQL

【讨论】:

    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多