乐趣区

关于时区:数仓是如何与夏令时愉快的玩耍

摘要: 次要讲述夏令时的起源,倒退,标准化以及如何在 GaussDB 中查问任一时区的夏令时规定。

本文分享自华为云社区《DWS 如何与“夏令时”欢快的游玩!》,原文作者:leapdb。

1. 背景介绍

为了更深刻理解夏令时,咱们先看一则纠结不休的新闻:

新华网莫斯科7月9日电(记者曹妍)俄罗斯联邦委员会(议会上院)9日通过法案,确定从往年10月26日开始,俄罗斯全国时区将在目前根底上向后推延一个小时。以首都莫斯科为例,目前工夫比格林尼治工夫早4个小时,10月26日之后,莫斯科工夫将比格林尼治工夫早3个小时。

该法案此前曾经通过国家杜马(议会下院)通过,预计俄总统将很快签订法案。这是俄罗斯2011年永恒应用夏令时后再一次变更时制。俄罗斯幅员辽阔,横跨泛滥时区,社会始终就如何应用“正当工夫”争论不休。而这次时制调整,也不是让所有人都很称心。

出于节能思考,原苏联及俄罗斯已经应用过三十年的夏令时。夏令时也称夏时制,指的是在天黑早的春夏季将工夫向前调一个小时,其初衷是为了更充沛地利用阳光。在很多高纬度地区,春夏季太阳升起工夫显著比夏季早,夏时制使人早起早睡,缩小因照明耗费的能源。

俄罗斯自1981年至2011年规定应用夏令时。每年3月最初一个星期日,时钟被拨快一个小时;每年10月最初一个星期日,时钟被拨慢一个小时。以首都莫斯科为例,夏令时间比格林尼治工夫早4个小时,非夏令时间比格林尼治工夫早3个小时。

不过,人们对于夏令时的利弊问题始终存在争议。对于古代社会来说,夏时制是否能节省能源耗费的总量尚无定论。另外,医学专家对于每年两次扭转工夫对人体生物钟影响有多大也各持意见。

从2011年开始,俄罗斯停止使用冬夏时制转换。时任总统2011年下令,当年夏令时完结后不再将钟表调慢一个小时,并永恒应用夏令时间,这意味着俄罗斯全国时区提前一个小时,莫斯科工夫全年都比格林尼治工夫早4个小时。时任总统解释说,频繁调整工夫打乱了人体生物周期,让人感到压力,容易生病。

对于幅员辽阔的俄罗斯来说,永恒应用夏令时能够使不同地区的居民多取得局部阳光。然而俄罗斯大部分地区纬度高,夏季时天黑得比拟晚,依然应用夏令时迫使人们须要在光明中起床下班,给生存造成肯定艰难。

永恒应用夏令时两年多以来,赞成者越来越少。在停止使用夏时制的2011年当年,俄罗斯独立民调机构列瓦达核心的民调显示,63%的受访者反对永恒应用夏令时。不过该考察机构去年10月所做民调显示,赞成此举的受访者比例升高到41%。

2012年至今,曾先后有多名议员提交变更时制的议案。在因各种起因屡次推延探讨后,国家杜马6月终于开始正式探讨变更时制的法案,并确定从永恒应用夏令时变为永恒应用“夏季工夫”。不过这也没有让所有人都称心。稍早前一项民调显示,反对应用夏令时和反对应用“夏季工夫”的受访者各占约1/3,另外有1/3的受访者示意无所谓。

可见,夏令时始终是一个争论不休的事件,到底要不要采纳夏令时,咱们还须要从它的起因及社会倒退水平来细看。

2. 什么是夏令时,夏令时的创立、起因及利弊

夏令时,也叫夏时制,夏气节(Daylight Saving Time:DST)又称为“日光节约时制”,在这一制度履行期间所采纳的对立工夫称为“夏令时间”。个别在天黑早的冬季人为将工夫调快一小时,能够使人早起早睡,缩小照明量,以充分利用光照资源,从而节约照明用电。各个驳回夏时制的国家具体规定不同。全世界有近 110 个国家每年要履行夏令时。

夏令时产生及逐渐被多个国家所采纳的过程:

  1. 美国卓越的政治家、外交家——富兰克林(被印在 100 美元钞票上的人物),在法国任美国驻法国大使期间,因为习惯于过后美国农村贵族的早睡早起生存,早上漫步时看到法国人 10 点才起床,夜生活过到深夜。

这样与法国人交换、工作的工夫就会很少,在他看来这是很浪费时间的。于是他在 1784 年给《巴黎杂志》的编辑写了一封信,信上说法国人的生活习惯节约了大好的阳光,倡议他们早睡早起,说每年能够节约 6 千 4 百万磅蜡烛。

  1. 1907 年,英国建筑师威廉·维莱特(William Willett)才正式向英国议会提出夏令时的构思,次要是为了节省能源和提供更多的工夫用来训练士兵,但议会通过答辩没有驳回。
  2. 1916 年,德国这个崇尚节约、考究环保的国家,率先站进去尝试,在全国这项打算,后果每天果然能节约下 15% 的煤、电等资源。
  3. 英国因为怕德国会从中失去更大的效益,因而紧跟着也采取了夏令时,夏令时节约了约 15% 的煤气和电力。
  4. 在英德都驳回夏令时后,法国不久也效仿履行。

6 1917 年,俄罗斯第一次履行了夏令时。

  1. 1918 年,加入了第一次世界大战的美国也履行了夏令时,但战后立刻勾销了。
  2. 1942 年,第二次世界大战期间,美国又履行了夏令时。1945-1966 年由各州本人确定应用夏令时的起始与完结工夫(日期)。1966 年,美国联邦政府从新对立了夏令时的起始与完结工夫(日期)。
  3. 欧洲大部分国家从 1976 年,即第四次中东战争导致首次石油危机(1973 年)3 年后开始履行夏令时。
  4. 看到了夏令时的好处,接下来,全世界的 110 个国家先后履行,包含中国。

可见,省钱是集体人都喜爱的好事件。

夏令时的长处

为什么说,夏令时更够节省能源?家喻户晓,夏天是一年四季中,天黑得较早、天黑得较慢的一个节令,夜晚比拟短,白天比拟长。那么,如果大家可能在夏天早起、并晚睡一个小时,将能充分利用好天然光照资源,那么,就能把照明用电给节省下来。而整个夏天,每人将能节省下巨额能源。

夏令时的毛病

  1. 当夏令时开始和完结时,人们必须将所有计时仪器调快或调慢,这在以前大家都还应用机械手表或性能手机的年代事件很麻烦的事件。
  2. 当夏令时完结时,某些工夫会在当天呈现两次,这些都容易形成凌乱。并且影响航班的工夫。

夏令时比拟适宜高纬度地区,因高纬度地区太阳在冬季升起的工夫,显著比夏季要早,因而夏令时的履行成果会很好。可是在低纬度地区就不一样了,不仅履行夏令时的成果不大,还会带来许多负面影响。

比方,低纬度地区夏天的夜晚是湿热、闷热的,让人难以入眠。而到了凌晨则比拟凉快舒服,正是安稳睡眠的好工夫,这时候如果要早起,就会升高人们的睡眠品质,导致人的精力萎靡,从而影响工作品质,且有损身材的衰弱,并让人的情绪变得较为焦躁,呈现一系列不良的反馈。而中国,正是一个低纬度国家,所以不适宜履行夏令时。

另外,中国还是一个地区辽阔的国家,因而逾越 5 个时区,从东向西看,就相差了 5 个小时。如果再被对立要求提前 1 个小时起床,像东部地区还好些,可像西部地区,相当于天没亮就起床了……如此,睡眠品质受到影响不说,因为起床时天还没亮,也不可能争光洗刷吃早点,那么该应用的照明用电,照样会耗费。
而中国的很多城市在夏天热得像个大火炉,阐明在中国冬季,最耗电的不是用于照明,而是用于制冷!那么,如果中国履行夏令时,尤其是大量风扇、空调呈现并遍及后,要是为节俭照明用电而耗费制冷用电,反而得失相当。

夏令时的本意是早睡早起,充分利用阳光,而调快或调慢所有计时仪器,达到这一目标,无疑是最不失当的,好比自欺欺人。咱们应该做的是调整适宜的作息时间,养成随手关灯等日常节能环保形式。

3. 我国应用夏令时的历史

看到了夏令时的好处,全世界的 110 个国家先后履行夏令时,包含中国,为减速经济倒退、节约能源,便在 1986 年 4 月,公布了在全国履行夏令时的告诉,所参照的是国外成熟的相干计划。不过在履行 6 年之后,也就是 1991 年时,我国便对夏令时喊停了。

下表是我国以前执行夏令时的时间表:

  • 1935 年至 1951 年,每年 5 月 1 日至 9 月 30 日。
  • 1952 年 3 月 1 日至 10 月 31 日。
  • 1953 年至 1954 年,每年 4 月 1 日至 10 月 31 日。
  • 1955 年至 1956 年,每年 5 月 1 日至 9 月 30 日。
  • 1957 年至 1959 年,每年 4 月 1 日至 9 月 30 日。
  • 1960 年至 1961 年,每年 6 月 1 日至 9 月 30 日。
  • 1974 年至 1975 年,每年 4 月 1 日至 10 月 31 日。
  • 1979 年 7 月 1 日至 9 月 30 日。
  • 1986 年 4 月 13 日至 9 月 14 日,
  • 1987 年 4 月 12 日至 9 月 13 日,
  • 1988 年 4 月 10 日至 9 月 11 日,
  • 1989 年 4 月 16 日至 9 月 17 日,
  • 1990 年 4 月 15 日至 9 月 16 日,
  • 1991 年 4 月 14 日至 9 月 15 日。

4. GaussDB(DWS) 中如何查问某个国家的夏令时

4.1. GaussDB(DWS) 中时区相干零碎表

pg_timezone_names – GaussDB(DWS) 中存储时区信息的零碎表

pg_timezone_abbrevs – GaussDB(DWS) 中存储时区简称信息的零碎表

4.2. 查问以后(2021/03/05)曾经开始应用夏令时间的时区信息

从 pg_timezone_names 查问以后(2021/03/05)曾经开始应用夏令时间的时区信息:

postgres=# select * from pg_timezone_names where is_dst='t';
         name          | abbrev | utc_offset | is_dst 
-----------------------+--------+------------+--------
 Australia/NSW         | AEDT   | 11:00:00   | t
 Australia/South       | ACDT   | 10:30:00   | t
 Australia/Yancowinna  | ACDT   | 10:30:00   | t
 Australia/Broken_Hill | ACDT   | 10:30:00   | t
 Australia/Lord_Howe   | +11    | 11:00:00   | t
 Australia/ACT         | AEDT   | 11:00:00   | t
 Australia/Melbourne   | AEDT   | 11:00:00   | t
 Australia/Adelaide    | ACDT   | 10:30:00   | t
 Australia/LHI         | +11    | 11:00:00   | t
 Australia/Currie      | AEDT   | 11:00:00   | t
 Australia/Hobart      | AEDT   | 11:00:00   | t
 Australia/Tasmania    | AEDT   | 11:00:00   | t
 Australia/Sydney      | AEDT   | 11:00:00   | t
 Australia/Canberra    | AEDT   | 11:00:00   | t
 Australia/Victoria    | AEDT   | 11:00:00   | t
 NZ                    | NZDT   | 13:00:00   | t
 NZ-CHAT               | +1345  | 13:45:00   | t
 Europe/Dublin         | GMT    | 00:00:00   | t
 Eire                  | GMT    | 00:00:00   | t
 Chile/Continental     | -03    | -03:00:00  | t
 Chile/EasterIsland    | -05    | -05:00:00  | t
 Antarctica/McMurdo    | NZDT   | 13:00:00   | t
 Antarctica/South_Pole | NZDT   | 13:00:00   | t
 America/Asuncion      | -03    | -03:00:00  | t
 America/Santiago      | -03    | -03:00:00  | t
 Pacific/Apia          | +14    | 14:00:00   | t
 Pacific/Chatham       | +1345  | 13:45:00   | t
 Pacific/Easter        | -05    | -05:00:00  | t
 Pacific/Auckland      | NZDT   | 13:00:00   | t
 Pacific/Norfolk       | +12    | 12:00:00   | t
(30 rows)

从 pg_timezone_abbrevs 查问以后(2021/03/05)曾经开始应用夏令时间的时区信息:

postgres=# select * from pg_timezone_abbrevs where is_dst='t';
 abbrev | utc_offset | is_dst 
--------+------------+--------
 ACDT   | 10:30:00   | t
 ACSST  | 10:30:00   | t
 ADT    | -03:00:00  | t
 AEDT   | 11:00:00   | t
 AESST  | 11:00:00   | t
 AKDT   | -08:00:00  | t
 ALMST  | 07:00:00   | t
 AWSST  | 09:00:00   | t
 AZOST  | 00:00:00   | t
 BDST   | 02:00:00   | t
 BRST   | -02:00:00  | t
 BST    | 01:00:00   | t
 CADT   | 10:30:00   | t
 CDT    | -05:00:00  | t
 CEST   | 02:00:00   | t
 CETDST | 02:00:00   | t
 CHADT  | 13:45:00   | t
 CLST   | -03:00:00  | t
 CLT    | -03:00:00  | t
 EASST  | -05:00:00  | t
 EAST   | -05:00:00  | t
 EDT    | -04:00:00  | t
 EEST   | 03:00:00   | t
 EETDST | 03:00:00   | t
 EGST   | 00:00:00   | t
 FJST   | 13:00:00   | t
 FNST   | -01:00:00  | t
 IDT    | 03:00:00   | t
 KDT    | 10:00:00   | t
 KGST   | 06:00:00   | t
 LHDT   | 11:00:00   | t
 MDT    | -06:00:00  | t
 MEST   | 02:00:00   | t
 MESZ   | 02:00:00   | t
 METDST | 02:00:00   | t
 MSD    | 04:00:00   | t
 MUST   | 05:00:00   | t
 NDT    | -02:30:00  | t
 NZDT   | 13:00:00   | t
 PDT    | -07:00:00  | t
 PKST   | 06:00:00   | t
 PMDT   | -02:00:00  | t
 PYST   | -03:00:00  | t
 PYT    | -03:00:00  | t
 SADT   | 10:30:00   | t
 ULAST  | 09:00:00   | t
 UYST   | -02:00:00  | t
 UZST   | 06:00:00   | t
 WADT   | 08:00:00   | t
 WDT    | 09:00:00   | t
 WETDST | 01:00:00   | t
 WGST   | -02:00:00  | t
 YEKST  | 06:00:00   | t
(53 rows)

4.3. GaussDB(DWS) 中查问某个时区采纳夏令时的历史记录

在 GaussDB(DWS) 中咱们能够通过 SQL 查问以后某个时区是否曾经采纳夏令时间的信息,然而咱们如果想晓得某个时区在历史上都哪些工夫应用过夏令时,咱们能够借助内部工具来实现。

zdump 是一个 linux 操作系统自带的二进制工夫文件解析工具。通过它咱们能够解析一个二进制时区文件,查看某个时区绝对于 UTC 的时间差以及夏令时规定。

GaussDB(DWS) 中采纳与 GNU 统一的标准时区数据信息库,因而 GaussDB(DWS) 中的二进制时区文件也能够应用该工具来解析。从上图中咱们能够看出我国采纳夏令时的历史。

5. 总结

综上,GaussDB(DWS) 作为一款面向寰球用户的高性能剖析型数据库产品,对夏令时的反对也是合乎工业界标准规范的。GaussDB(DWS) 中自带时区信息库,能够繁难不便的查问夏令时信息。

想理解 GuassDB(DWS) 更多信息,欢送微信搜寻“GaussDB DWS”关注微信公众号,和您分享最新最全的 PB 级数仓黑科技~

点击关注,第一工夫理解华为云陈腐技术~

退出移动版