我有一个查询,它创建一个包含日期后接下来 24 小时内每一分钟的列。
(SELECT TO_DATE ('05/07/2012 15:00:00', 'DD/MM/YYYY HH24:MI:SS')
+ (ROWNUM / 1440)
AS foo
FROM ( SELECT (ROWNUM - 1)
FROM DUAL
CONNECT BY LEVEL <= 1336));
foo 的第一行是 15:01。这对我来说似乎是错误的。
所以我自己运行了子查询:
SELECT (ROWNUM - 1) FROM DUAL CONNECT BY LEVEL <= 1336;
它按预期返回 0,1,2,3,4 等。于是我再次运行子查询但除以1440,第一个值还是0。
所以我认为可能在时间戳中添加 0 会导致一些奇怪,所以我跑了
SELECT TO_DATE ('05/07/2012 15:00:00', 'DD/MM/YYYY HH24:MI:SS') + (0/1440) FROM DUAL;
仍然得到05/06/2012 15:00:00
那么为什么再次组合这个备份会导致第一个值是 15:01?