日付から24時間後の1分ごとを含む列を作成するクエリがあります。
(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になるのでしょうか。