【发布时间】:2022-01-09 16:46:16
【问题描述】:
在调试模式下使用 vscode,当我将鼠标悬停在日期字段上时,它显示为下图。
但是当我注销它时,它会转换为
"execution_date":"2021-12-02T20:23:48.322Z"
这是负 7 小时。
该字段作为时间戳存储在 AWS RDS 上的 postgres 数据库中,运行 show timezone; 返回 UTC,我在 GMT+7 时间使用 VSCode。由于日期已更改并用于调用api,因此如何解决此问题,因此返回的结果将不正确。
【问题讨论】:
-
字段是
timestamp还是timestamp with time zone?使用psql会为该服务器返回什么show timezone;?添加答案以更新您的问题。 -
@AdrianKlaver 该字段是时间戳,运行
show timezone;返回 UTC。调试时将鼠标悬停在 execution_date 字段上时,它显示的日期和时间与存储在数据库中的日期和时间相同,但是当它被注销并用于调用 API 时,它会减少 7 小时。 -
您现在已经了解了如果您关心时区,为什么不应该使用
timestamp。阅读Date/Datetimes 8.5.1.3。时间戳。短版您的datetime被假定为UTC进入。回到你的时间:select '2021-12-02T20:23:48.322Z' at time zone 'ICT'; 2021-12-03 03:23:48.322 -
@AdrianKlaver 但是在调试时为什么它显示的时间与存储在数据库中的时间相同,但是当注销并用于调用 API 时,它得到了负 7 小时。我认为这与我的操作系统或 VSCode 有关吗?
-
@AdrianKlaver 抱歉,不知道为什么,但我无法编辑上述回复。在数据库中它存储为
2021-12-03 03:23:48.322,文档指出the resulting value is derived from the date/time fields in the input value, and is not adjusted for time zone.,我正在使用Sequelize,并且生成的查询没有设置任何时区,所以它不应该是负7小时,这是正确的。
标签: postgresql date datetime visual-studio-code time