0

update_ts timestamp without time zone我有一个应用程序,其目标是让数据库中的所有时间戳都采用 GMT 格式时区。

4

1 回答 1

9

我有一个应用程序,其目标是让数据库中的所有时间戳都采用 GMT 格式

在这种情况下timestamp with time zone, ( timestamptz) 正是您想要的,尽管 SQL 中时间戳类型的命名非常愚蠢。

“带有时区的时间戳”实际上是“存储在 UTC 中并在输入/输出上转换的时间戳”。

“timestamp without time zone”是“没有时区转换的时间戳存储和检索”。

如果您将“有/无时区”读作“有/无时区转换” ,则这些类型会更有意义。

尽管有它们的名字,但这两种类型实际上都存储了时区。没有“带时区的时间戳”实际上应该是什么 SQL 类型,它是存储的本地时间,其中明确指示了 tz 偏移量和时间所在的时区。(简单的 UTC 偏移量还不够好由于 DST 转换的含糊不清)。

如果您想在 UTC 中执行所有操作,请使用timestamptz并将服务器设置TimeZone为 UTC。这样,确实需要本地时间转换的应用程序仍然可以通过设置TimeZone.

于 2013-08-18T23:59:33.940 回答