Oracle SQL:获取给定日期的时区



如何根据以下信息准确确定给定日期(date data_type列)的时区?

a) DATE列不存储时区信息

b) 服务器时区为EST或EDT,具体取决于日期灯保存是否有效

c) SQL可以很容易地获取当前时区偏移:

SELECT TO_CHAR(SYSTIMESTAMP,'TZH:TZM') FROM DUAL

假设今天(2014年11月3日)的时区是美国东部时间,我们如何通过程序确定给定日期(如2014年10月21日)的有效时区(即美国东部时间或美国东部时间)?

Oracle支持IANA时区。美国东部时区由"America/New_York"表示。

可以使用FROM_TZTIMESTAMP值创建TIMESTAMP WITH TIME ZONE。(如果你从DATE开始,那么你应该首先转换到TIMESTAMP。)

然后,您可以将TO_CHAR'TZH:TZM'一起使用以获得偏移,或者将'TZD'与缩写(如EST或EDT)一起使用。

例如:

SELECT TO_CHAR(FROM_TZ(TIMESTAMP '2014-11-02 00:00:00', 'America/New_York'),'TZD')
FROM DUAL;  -- Output: 'EDT'
SELECT TO_CHAR(FROM_TZ(TIMESTAMP '2014-11-02 00:00:00', 'America/New_York'),'TZH:TZM')
FROM DUAL;  -- Output: '-04:00'
SELECT TO_CHAR(FROM_TZ(TIMESTAMP '2014-11-03 00:00:00', 'America/New_York'),'TZD')
FROM DUAL;  -- Output: 'EST'
SELECT TO_CHAR(FROM_TZ(TIMESTAMP '2014-11-03 00:00:00', 'America/New_York'),'TZH:TZM')
FROM DUAL;  -- Output: '-05:00'

相关内容

  • 没有找到相关文章

最新更新