sql - SQL date_part 返回本地时区而不是参数中的时区
问题描述
SELECT date_part('timezone_hour', '2019-12-01 13:37:12 PST'::timestamptz) AS "tz"
和
SELECT date_part('timezone_hour', '2019-12-01 13:37:12 EST'::timestamptz) AS "tz"
两者都返回-8
,我的本地太平洋时间 GTM 偏移量以小时为单位,而不是函数参数中的时区。
提取发生相同的行为:
SELECT extract('timezone_hour' from '2019-12-01 13:37:12 PST'::timestamptz) AS "year"
和
SELECT extract('timezone_hour' from '2019-12-01 13:37:12 PST'::timestamptz) AS "year"
两者都返回-8
。
为什么我没有得到我为时间戳指定的时区偏移量?
解决方案
试试这些:
SELECT date_part('hour', '2019-12-01 13:37:12'::timestamp AT TIME ZONE 'PST') AS "tz";
SELECT date_part('hour', '2019-12-01 13:37:12'::timestamp AT TIME ZONE 'EST') AS "tz";
SELECT date_part('hour', '2019-12-01 13:37:12'::timestamp AT TIME ZONE 'AEST') AS "tz";
这些在rextester (postgres)分别返回 22、19 和 4
在您现有的方法中,如果您拉出“timezone_hour”,它将是您输入的值(因为那是该时区的小时)。