0

日付から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になるのでしょうか。

4

1 に答える 1

2

原因外部クエリのROWNUMは、最初は1であり、ゼロではありません。

于 2012-07-05T14:42:05.690 に答える