PostgreSQL是否像SQL Server一样有一个“datetimeoffset”类型?像“2000-01-01 3:00:00 + 4”这样的对象是否存在而不管系统时间?

5m1hhzi4  于 6个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(59)

在PostgreSQL中,当我使用SELECT NOW()SELECT NOW():TIMESTAMP AT TIME ZONE 'EST'时,任何产生的TIMESTAMPTZ都显示在我的系统时间中。
另一方面,SQL Server有一个显式命令DATETIMEOFFSETFROMPARTS,它可以创建一个带有选定时间和时区的DATETIMEOFFSET条目,例如DATETIMEOFFSETFROMPARTS(2000,1,1,3,2,4,999999,4,30,7)将是“2000-01-01 3:02:04.999999 +04:30”。
Postgres的TIMESTAMPTZ似乎更倾向于在计算机系统时间中显示历史中的明确时刻(忽略由于DST而重复的1am-2am时段),而不是存储指定时区的日期时间。

gopyfrb3

gopyfrb31#

你的观察是正确的。PostgreSQL的timestamp with time zone实际上是一个“绝对时间”,不存储时区信息。如果你想在表中存储特定的时区,你必须使用一个额外的列。

相关问题