关于Unix(POSIX)时间,维基百科说:
由于它处理闰秒,它既不是时间的线性表示,也不是UTC的真实表示.
但Unix date命令似乎并没有真正意识到它们
$ date -d '@867715199' --utc
Mon Jun 30 23:59:59 UTC 1997
$ date -d '@867715200' --utc
Tue Jul 1 00:00:00 UTC 1997
Run Code Online (Sandbox Code Playgroud)
虽然那里应该有一个闰秒Mon Jun 30 23:59:60 UTC 1997.
这是否意味着只有date命令忽略了闰秒,而Unix时间的概念却没有?
今晚将有一个闰秒添加到时钟,在一天的最后一小时的最后一分钟将有61秒.
2015-06-30 23:59:60
Run Code Online (Sandbox Code Playgroud)
但是,Oracle一分钟只支持60秒:
TO_DATE( '2015-06-30 23:59:60', 'YYYY-MM-DD HH24:MI:SS' )
Run Code Online (Sandbox Code Playgroud)
错误:
ORA-01852: seconds must be between 0 and 59
Run Code Online (Sandbox Code Playgroud)
和
SELECT TO_DATE( '2015-06-30 23:59:59', 'YYYY-MM-DD HH24:MI:SS' ) + INTERVAL '1' SECOND AS Incr_Second_Before,
TO_DATE( '2015-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS' ) - INTERVAL '1' SECOND AS Decr_Second_After
FROM DUAL
Run Code Online (Sandbox Code Playgroud)
给出输出:
| INCR_SECOND_BEFORE | DECR_SECOND_AFTER |
|------------------------|------------------------|
| July, 01 2015 00:00:00 | June, 30 2015 23:59:59 |
Run Code Online (Sandbox Code Playgroud)
有没有办法在Oracle中处理闰秒?