Postgresql 这是postgres jdbc处理postgres时间戳的错误吗?
请回答这个问题: 现在我用Postgresql 这是postgres jdbc处理postgres时间戳的错误吗?,postgresql,jdbc,timestamp,Postgresql,Jdbc,Timestamp,请回答这个问题: 现在我用 new java.sql.Timestamp(date.getTime() + date.getTimezoneOffset() * 60000) 上载日期值,以及 tstmp.getTime() - tstmp.getTimezoneOffset() * 60000 从postgres下载价值 但是,date.getTime()是UTC时区1970-01-01的毫秒,它是静态的,与客户端时区无关,请参见下面的内容 new Date(1443145546920)
new java.sql.Timestamp(date.getTime() + date.getTimezoneOffset() * 60000)
上载日期值,以及
tstmp.getTime() - tstmp.getTimezoneOffset() * 60000
从postgres下载价值
但是,date.getTime()是UTC时区1970-01-01的毫秒,它是静态的,与客户端时区无关,请参见下面的内容
new Date(1443145546920)
Fri Sep 25 2015 09:45:46 GMT+0800 (中国标准时间)
*Now i change timezone from Beijing/Shanghai to Tokyo*
new Date(1443145546920)
Fri Sep 25 2015 10:45:46 GMT+0900 (Japan Standard Time)
听着,1443145546920应该总是2015年9月25日星期五01:45:46+0000,永远不要改变我的客户时区
因此,正确的方法应该是:
client(utc+8) dbserver(utc)
upload time 1443145546920 without tzoffset
write 1443145546920
download
send 1443145546920
got 1443145546920 and add client tzoffset 480m
但postgres jdbc向我展示了这一点:
client(utc+8) jdbc of pg dbserver(utc)
upload time 1443145546920 + tzoffset
- tzoffset 480m
write 1443145546920
download
send 1443145546920
+ tzoffset 480m
got 1443145546920 + tzoffset
manual substract tzoffset
使用珍贵的标题空间来描述所谓的“bug”。如果这是一个错误,让它自然形成。嗯,我的英语很差,你能给我一个关于它的简短标题吗?请出示表格定义。特别是,您使用的是时间戳还是带时区的时间戳?没有表,只是一个测试sql:“选择to_json(?::timestamp)作为a,to_json(current_timestamp::timestamp)作为b”,请参阅。我知道带时区的时间戳是更好的选择,但是Javascript不支持Date.setTimezoneOffset,所以utc是唯一的方法。这是否回答了您的问题: