-
- 选择 (当(((时区“ CURRENT_TIMESTAMP”在美国/纽约州”)-CURRENT_TIMESTAMP ='-04:00:00')然后是“ EDT”时 何时(((CURRENT_TIMESTAMP AT TIME ZONE'America / New_York')-CURRENT_TIMESTAMP ='-05:00:00')然后是'EST'
-
创建或替换功能public.time_zone_tz_abbriv( 文字 ) 以AS形式返回文字 $ body $ 选择 'ET'= $ 1时的情况(然后(((CURRENT_TIMESTAMP AT TIME ZONE'America / New_York')-CURRENT_TIMESTAMP')= '04:00:00'then'EDT' 当(CURRENT_TIMESTAMP-(CURRENT_TIMESTAMP AT TIME ZONE'America / New_York'))= '05:00:00'然后'EST'END) 当'MT'= $ 1然后(例如(((CURRENT_TIMESTAMP AT TIME ZONE'America / Edmonton')-CURRENT_TIMESTAMP)= '06:00:00'然后是'MDT' 当(CURRENT_TIMESTAMP-(CURRENT_TIMESTAMP AT TIME ZONE'America / Edmonton'))= '07:00:00'然后'MST'END) 当'PT'= $ 1时(在这种情况下(((CURRENT_TIMESTAMP AT TIME ZONE'America / Los_Angeles')-CURRENT_TIMESTAMP)= '07:00:00'然后是'PDT' 当(CURRENT_TIMESTAMP-(CURRENT_TIMESTAMP AT TIME ZONE'America / Los_Angeles'))= '08:00:00'然后'PST'END) 当'CT'= $ 1时(例如(((CURRENT_TIMESTAMP AT TIME ZONE'America / Mexico_City')-CURRENT_TIMESTAMP)= '05:00:00'然后是'CDT' 当(CURRENT_TIMESTAMP-(CURRENT_TIMESTAMP AT TIME ZONE'America / Mexico_City')= '06:00:00'然后'CST'END) 结束 $ body $ 语言'sql' 不可变的 NULL输入返回NULL 安全调用者
SELECT TIME_ZONE_TZ_ABBRIV('ET'); 答:EST或EDT SELECT TIME_ZONE_TZ_ABBRIV('PT'); 回答:PST或PDT SELECT TIME_ZONE_TZ_ABBRIV('MT'); 回答:MST或MDT SELECT TIME_ZONE_TZ_ABBRIV('CT'); 答:CST或CDT
答案 0 :(得分:1)
只要您的要求确实是时区EDT/EST
,MDT/MST
,并且对于 current 时间戳,您可以使用pg_timezone_names
。
应该总是根据您的系统时钟返回正确的缩写。
示例:
SELECT *
FROM pg_timezone_names
WHERE Name IN ('America/Edmonton','America/New_York')
此外,所有缩写均在pg_timezone_abbrevs
中,与日期无关
示例:
SELECT *
from pg_timezone_abbrevs
WHERE Abbrev in ('EST','EDT')