ITPub博客

首页 > 数据库 > Oracle > 小时制式问题

小时制式问题

原创 Oracle 作者:bisal 时间:2018-12-28 14:56:23 0 删除 编辑

user_objects视图中,有两个字段,created和timestamp,按照官方手册,created就是对象的创建时间戳,DATE类型,timestamp是对象定义的时间戳,VARCHAR2类型,而且他的长度是19,正好存储"2018-12-27 09:31:14",显然和created含义相同,


但我们创建表,发现user_objects视图检索出来的created和timestamp,显示的时间,相差了12个小时,这是为什么?

SQL> create table t1(id number);
Table created.
SQL> select to_char(created, 'yyyy-mm-dd hh:mi:ss'), timestamp from user_objects where object_name='T1';
TO_CHAR(CREATED,'YYYY-MM-DDHH:MI:SS')  TIMESTAMP
------------------------------------- ---------------------
2018-12-27 09:31:14                    2018-12-27:21:31:14

其实,12个小时,容易联想到的,就是12小时制,我们验证下,针对DATE类型的created,使用hh24的格式,显示出来,就是这个timestamp的值,

SQL> select to_char(created, 'yyyy-mm-dd hh24:mi:ss'), timestamp from user_objects where object_name='T1';
TO_CHAR(CREATED,'YYYY-MM-DDHH24:MI:SS')   TIMESTAMP
---------------------------------------- ---------------------
2018-12-27 21:31:14                       2018-12-27:21:31:14

如果使用“am"或“pm”,都会正常显示,这是下午09:31:14,

SQL>  select to_char(created, 'yyyy-mm-dd hh:mi:ss am'), timestamp from user_objects where object_name='T1';
TO_CHAR(CREATED,'YYYY-MM-DDHH:MI:SSAM')  TIMESTAMP
--------------------------------------- ---------------------
2018-12-27 09:31:14 pm                   2018-12-27:21:31:14
SQL> select to_char(created, 'yyyy-mm-dd hh:mi:ss pm'), timestamp from user_objects where object_name='T1';
TO_CHAR(CREATED,'YYYY-MM-DDHH:MI:SSPM')  TIMESTAMP
--------------------------------------- ---------------------
2018-12-27 09:31:14 pm                   2018-12-27:21:31:14

am,拉丁文ante meridiem,准确地说,应该是中午之前。

pm,拉丁文post meridiem,准确地说,应该是中午之后。


关于12小时制,科普一下,

十二小时制起源于埃及。然而,每个小时的长度会由于季节而不同。从黄昏到黎明12个小时,从黎明到黄昏也是12个小时长。罗马人也使用12小时制:全天平均地被分为十二个小时(因此一年中各天的长度是不尽相同的),夜间被分为三个小时。这是因为在水鈡发明之前,人们使用太阳作为计时工具,所以没有办法准确的划分时间。


罗马人对于早上的时间计数同现在是相反的:例如,"3 ante meridiem",或“3 hours ante meridiem”意味着中午以前的第三个小时,而不是现代意义的“午夜以后的第三个小时”。


今天,十二小时制仍然是大多数指针式钟表显示时间的方法,每十二个小时旋转一周。对于24小时旋转一周来说,时针每小时仅仅转动了15°,这个角度太小以至于难以分辨。


尽管它在现代世界中已经广泛的被二十四小时制所代替,尤其在书写通信中。但是,12小时制使用的ante meridiem/post meridiem形式仍然是当前在澳大利亚和美国书写和交谈时使用的主要形式。在加拿大(尤其是魁北克)、英联邦、阿尔巴尼亚、希腊和其他的英语地区,以及南美洲的西班牙语地区,他也是常常和24小时制同时使用。缩写“AM”和“PM”也常常在英语和西班牙语中使用。在阿尔巴尼亚,也有意义相同的词“PD”和“MD”,在希腊则是“πµ”和“µµ”。其它的多数语言中很少有正式场合中使用“上午”和“下午”的提法,但是在民间则使用非正式的12小时制。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7192724/viewspace-2286811/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE,10g/11g OCP,11g OCM,国内首批Oracle YEP成员(Oracle Young Expert Program,Oracle用户组年轻专家项目),EXIN DevOps Master,Oracle爱好者,微信公众号:bisal的个人杂货铺

注册时间:2013-07-26

  • 博文量
    340
  • 访问量
    2623853