在Oracle中是否有办法选择夏令时切换到我的语言环境的日期?
模糊地等同于此的东西会很好:
SELECT CHANGEOVER_DATE FROM SOME_SYSTEM_TABLE WHERE DATE_TYPE = 'DAYLIGHT_SAVINGS_CHANGEOVER' AND TO_CHAR(CHANGEOVER_DATE,'YYYY') = TO_CHAR(SYSDATE,'YYYY'); -- in the current year
编辑:我希望找到一个解决方案,在国会调整DST法律时不需要改变,就像他们在2007年所做的那样.但是,已发布的解决方案可行.
为了改进Leigh Riffel的答案,使用相同的逻辑更加简单:
Function DaylightSavingTimeStart (p_Date IN Date) Return Date Is Begin Return NEXT_DAY(TO_DATE(to_char(p_Date,'YYYY') || '/03/01 02:00 AM', 'YYYY/MM/DD HH:MI AM') - 1, 'SUN') + 7; End; Function DaylightSavingTimeEnd (p_Date IN Date) Return Date Is Begin Return NEXT_DAY(TO_DATE(to_char(p_Date,'YYYY') || '/11/01 02:00 AM', 'YYYY/MM/DD HH:MI AM') - 1, 'SUN'); End;