日期:2014-05-16  浏览次数:20583 次

实行夏令时的国家,数据的日期操作需要注意了 DATE TO NUMBER,NUMBER TO DATE


在没有夏令时的中国,可以很简单的实现:
/* Formatted on 3/21/2013 13:58:29 (QP5 v5.240.12305.39446) */
CREATE OR REPLACE FUNCTION NUMBER2DATE (i_number NUMBER)
  RETURN DATE
AS
BEGIN
  RETURN   TO_DATE ('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
         + i_number / (24 * 60 * 60 * 1000);
END;
/

CREATE OR REPLACE FUNCTION DATE2NUMBER (i_date IN DATE)
  RETURN NUMBER
AS
BEGIN
  RETURN   (  i_date
            - TO_DATE ('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))
         * (24 * 60 * 60);
END;


来源夏令时,维基百科

目前实行夏时制的地區

这张图是2007年英国格林尼治全年的日出日落时间变化图,可以看到夏时制引起的日出日落巨大变化
  • 美国夏时制实行与否,完全由各州各郡自己决定。美国不实行夏令时的地区包括:
    • 亚利桑那州的大部分地区不使用夏令时,但是屬納瓦霍族保留區的地區使用夏令时
    • 夏威夷州
    • 波多黎各和维京群岛
    • 美属萨摩亚、關島和北馬里亞納群島
  • 美國原本於每年4月的第一個星期日凌晨2時起至10月的最後一個星期日凌晨2時實施夏令時間;但經美國國會2005年通過的能源法案,自2007年起延長夏令時間,開始日期從每年4月的第一個星期日,提前到3月的第二個星期日,結束日期從每年10月的最後一個星期日,延後到11月的第一個星期日
  • 加拿大夏时制實施日期一向跟美國一致,在美國2005年修法後,加拿大各省也在2007年3月美新法實施前完成修法。加國好幾個處於時區邊界的地區(包括薩斯喀徹溫省大部分地區和其他幾個較小地區)不實施夏时制。另外,加國春秋撥鐘時刻由各省自行決定,但在紐芬蘭2011年修法以後,現在全國都跟美國一樣在凌晨2時撥鐘。