在没有夏令时的中国,可以很简单的实现:
/* 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;
来源
夏令时,维基百科
目前实行夏时制的地區
- 美国夏时制实行与否,完全由各州各郡自己决定。美国不实行夏令时的地区包括:
- 美國原本於每年4月的第一個星期日凌晨2時起至10月的最後一個星期日凌晨2時實施夏令時間;但經美國國會2005年通過的能源法案,自2007年起延長夏令時間,開始日期從每年4月的第一個星期日,提前到3月的第二個星期日,結束日期從每年10月的最後一個星期日,延後到11月的第一個星期日。
- 加拿大夏时制實施日期一向跟美國一致,在美國2005年修法後,加拿大各省也在2007年3月美新法實施前完成修法。加國好幾個處於時區邊界的地區(包括薩斯喀徹溫省大部分地區和其他幾個較小地區)不實施夏时制。另外,加國春秋撥鐘時刻由各省自行決定,但在紐芬蘭2011年修法以後,現在全國都跟美國一樣在凌晨2時撥鐘。
- 欧盟国家和瑞士都是从3月最后一个星期日到10月最后一个星期日实行夏时制。欧盟国家在三月最后一个星期日協調世界時01:00同时撥快一小時,在十月的最后一个星期日協調世界時01:00进行相反的调整。
- 墨西哥从4月第一个星期日到10月最后一个星期日实行夏时制。
- 新西兰由于处于南半球,所以夏季和北半球相反。它从9月最後一个星期日到4月第一个星期天实行夏时;
- 澳大利亚只有东部和南部各州实行夏时制,原本从10月最后一个星期天到4月第一个星期天止。2008年东南各州跟從塔斯马尼亚岛夏令時,則在10月第一個星期天開始实行夏时制。西澳大利亞州從2006年底起開始為期三年的夏时制試驗,2009年,当地选民投票决定取消夏令时。
曾经实行夏时制的地区
- 1919年,中华民国在上海和天津曾短暂地实行了一年夏时制。[來源請求]正式記錄中,則從1945年起陸續實施過,但因部分專家學者反對,認為該時制易導致時間使用混亂,而於1941年至1979年間停止使用。
- 香港曾於1941年4月1日至1979年10月21日期間,多在夏季時段實施夏令時間(1977年和1978年未有实行),香港夏令时间的计算方法为香港标准时间加1小时。在日治時期的幾年間(1942年至1945年)曾全年實施,當時香港時間與日本本土時間實際上一致,1980年后不再实行,詳情請參閱香港時間。
- 澳門曾於1946年4月30日至1979年10月21日期間,多在夏季時段實施夏令時間(1977年和1978年未有实行)。
- 1986年至1991年,中华人民共和国在全国范围实行了六年夏时制,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)。除1986年因是实行夏时制的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。由于省电效果不抵需要适应时间的弊端,1992年4月5日后不再实行。
- 中国不适合使用夏令时的原因:
- 俄罗斯曾经使用过数十年的夏令时制度。2011年3月27日,俄罗斯总统梅德韦杰夫下令,2012年起俄罗斯全国停止夏时制。2011年夏时制实行后年底不再将表回调,所以相当于全国时区往前了一个小时。
所以在将DATE类型数据转换成NUMBER类型时一定要注意了,2007年及之前,夏令时的实行方式还不一样,所以要分开处理。
中国已经取消了夏令时,可是国外很多都是使用,所以涉及到收费的系统,在底层数据库处理日期时间时非常重要。