【发布时间】:2021-06-12 11:29:04
【问题描述】:
我想将 UTC 时区的日期转换为 PST 时区。 NEW_TIME 没有考虑 DST(夏令时)因素,所以我尝试使用 CAST 和 TO_TIMESTAMP_TZ 函数,但都给出了不正确的时间(大约 5 小时 30 分钟的差异)。不知道为什么。
SELECT TO_CHAR(TO_TIMESTAMP_TZ(max(end_date) AT TIME ZONE 'PST')
,'DD-MON-YYYY HH24:MI:SS')
FROM table1
WHERE NAME= 'FIRST';
SELECT TO_CHAR(CAST((max(end_date) AT TIME ZONE 'PST') AS DATE )
,'DD-MON-YYYY HH24:MI:SS')
FROM table1
WHERE NAME= 'FIRST';
我也尝试使用“US/PACIFIC”而不是“PST”,但它也给出了相同的结果。
max(end_date) 是 : 2021-03-15 07:17:16 (UTC)
查询返回(返回时间不正确):14-MAR-2021 18:47:16
应该的时间(预计正确时间):15-MAR-2021 00:17:16
任何人都可以帮助纠正我的查询或任何其他可以将日期从 UTC 转换为 PST 时区的函数(记住 DST 因素)。
【问题讨论】:
-
end_date在表格中是否有时区? IE。它是在TIMESTAMP WITH TIME ZONE数据类型中存储为TIMESTAMP '2021-03-15 07:17:16 UTC'还是在TIMESTAMP数据类型中存储为TIMESTAMP '2021-03-15 07:17:16'(并且不存储时区)。 -
不,它没有存储时区,它只是数据类型 TIMESTAMP。
标签: sql oracle datetime to-timestamp