2012-07-05 45 views
0

我有一個查詢,它創建一個包含日期後24小時內每分鐘的列。Oracle DateTime算術不一致

(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到時間戳導致一些wierdness,所以我跑

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?

回答

2

原因ROWNUM在外部查詢中第一次是1,而不是零。

+0

當然。我應該選擇那個。 – Squidly 2012-07-05 14:43:53

+0

請接受! :d – 2012-07-05 14:50:48