Oracle10g 如何查找带有时区的特定时间戳是否在夏令时内

Oracle10g 如何查找带有时区的特定时间戳是否在夏令时内,oracle10g,dst,Oracle10g,Dst,我有一个应用程序,以格林尼治标准时间存储时间,但与奥尔森茨机场名称相关,如“美国/纽约” 我需要确定给定的日期是否在本地夏令时内 我能找到的最接近的是TZ_偏移量(“Tzname”),但没有简单的方法可以获得相对于某个日期的下一个DST开始/结束时间 这似乎是朝着正确方向迈出的一步 选择时区“GMT”处的转换(mydate作为时间戳)作为mydateZ, 从时区的_tz(cast(mydate作为时间戳),'GMT')myzoneName作为mydateLocal考虑到类似的问题,我对您的问题编

我有一个应用程序,以格林尼治标准时间存储时间,但与奥尔森茨机场名称相关,如“美国/纽约”

我需要确定给定的日期是否在本地夏令时内

我能找到的最接近的是TZ_偏移量(“Tzname”),但没有简单的方法可以获得相对于某个日期的下一个DST开始/结束时间

这似乎是朝着正确方向迈出的一步

选择时区“GMT”处的转换(mydate作为时间戳)作为mydateZ,
从时区的_tz(cast(mydate作为时间戳),'GMT')myzoneName作为mydateLocal

考虑到类似的问题,我对您的问题编写了以下查询:

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',则日期在夏令时内。
日期和时区可以是查询的一个参数。

Nice-因为我们刚刚在美国“后退”,这个查询显示了不同:从v$timezone\u名称中选择tzname,到_char(从_tz(cast(sysdate作为时间戳),tzname),'TZD'),到_char(从_tz(cast(sysdate-5作为时间戳),tzname),'TZD'),现在有趣的问题是,从这些TZD名称,我们是否可以说,如果我们看到一个字母“S”,这意味着它在节省时间内,或者说这种模式并非在所有情况下都遵循?此外,当我将结果限制在从现在到180天之间的差异(即他们遵守DST)时,TZD中唯一不包括“ST”或“DT”的是“欧洲/莫斯科”和“W-SU”,我可以接受。好了,开始吧!谢谢