我有一个应用程序可以在GMT中存储时间,但与具有Olsen tz名称的机场相关联,例如“America / New York”。
我需要确定给定日期是否在当地夏令时期间。
我能找到的最接近的是TZ_OFFSET('Tzname'),但没有简单的方法来获得相对于某个日期的下一个DST开始/结束时间。
这似乎是朝着正确方向迈出的一步......
在时区'GMT'选择强制转换(mydate作为时间戳)作为mydateZ, from_tz(cast(mydate as timestamp),'GMT')在时区myzoneName为mydateLocal
答案 0 :(得分:0)
考虑到类似问题,我在您的问题中写了以下问题:
select decode(to_char(from_tz(cast (sysdate as timestamp),'CET'),'TZR'),
to_char(from_tz(cast (sysdate as timestamp),'CET'),'TZD'),'N','Y') is_daylight
from dual
一个简短的解释: 我将时区('CET')中的当前日期(sysdate)转换为时间戳,并比较时区的正常名称('TZR')和夏令时名称('TZD')。如果它们匹配,则sysdate不在夏令时内,如果它们不匹配(例如sysdate-100对于'CET'时区为'CEST'),则日期在夏令时内。 日期和时区可以是查询的参数。