【发布时间】:2017-03-30 16:21:52
【问题描述】:
我知道对此有一些类似的问题,但我很难理解为什么我的数据库会以这种方式格式化时间。
我有一个名为created_at 的字段,在数据库中的值为:
2017-03-30 11:01:25.976-04
现在是纽约时间上午 11 点,与 UTC 有四个小时的负偏移。
我希望它显示为 11:01am。但是,当我使用 TO_CHAR() 对其进行格式化时,它会将时间转换为 UTC 并显示 3:01pm。
SELECT to_char(ledger.created_at, 'Mon DD YYYY HH12: MI AM') AS formatted_date ...
我可以通过添加AT TIME ZONE 'America/New_York' 来解决这个问题,但我不喜欢在我的应用程序中硬编码的想法。
SELECT to_char(ledger.created_at AT TIME ZONE 'America/New_York', 'Mon DD YYYY HH12: MI AM') AS formatted_date ...
似乎时间戳字段知道它已经是什么时间了,它在哪个时区(或至少是偏移量)并且它在数据库本身中显示上午 11 点。
我也知道我可以在每次查询之前SET 当地时间,它会起作用,但我再次想知道是否有更简单的方法。似乎我可以剥离时区信息,只获取数据库中的 11:01am 时间。如果没有办法,我可以忍受,但我需要检查。
对于上下文,这是在使用 Sequelize 的 Node 和 Express 应用程序中。
【问题讨论】:
标签: postgresql timezone