在JDBC中插入当前的PostgreSQL服务器时间戳

3
我有一个移动应用程序,通过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)

这似乎是驱动程序中的一个错误,它总是将时区设置为客户端的时区。 - user330315
1个回答

1

如果您使用UTC时间戳,则避免时区不断变化是有意义的。让客户端负责将其转换为当前时区。

可以尝试这样做:

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

来源:在PostgreSQL中使用当前UTC时间作为默认值


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接