?
2つのデータ型12
と13
は、二つの異なる目的のためのものです。
- タイプ12 - テーブルに格納された日付
- タイプ13 - リテラル
TO_DATE
又はANSI日を使用して、日付にリテラル文字列を変換するときにも、SYSDATE
/CURRENT_DATE
ような内部日付関数によって返された日付DATE 'YYYY-MM-DD'
。
テストケース:タイプ12ため
基本テーブルの設定:
SQL> CREATE TABLE t(col DATE);
Table created.
SQL> INSERT INTO t SELECT SYSDATE FROM dual;
1 row created.
SQL> COMMIT;
Commit complete.
は異なる例を確認してください:
SQL> SELECT DUMP(col) FROM t;
DUMP(COL)
--------------------------------------------------------------------------------
Typ=12 Len=7: 120,116,3,17,18,6,55
SQL> SELECT DUMP(SYSDATE) FROM dual;
DUMP(SYSDATE)
--------------------------------------------------------------------------------
Typ=13 Len=8: 224,7,3,17,17,5,54,0
SQL> SELECT DUMP(CURRENT_DATE) FROM dual;
DUMP(CURRENT_DATE)
--------------------------------------------------------------------------------
Typ=13 Len=8: 224,7,3,17,17,14,20,0
SQL> SELECT DUMP(TO_DATE('17-DEC-1980 12:12:12','DD-MON-YYYY HH24:MI:SS')) FROM dual;
DUMP(TO_DATE('17-DEC-198012:12:12','
------------------------------------
Typ=13 Len=8: 188,7,12,17,12,12,12,0
リテラルANSI日付を使用して、ただTO_DATEのように:テーブル内の日付を格納しながら、あなたが見ることができるように
SQL> SELECT DUMP(DATE '2016-03-17') FROM dual;
DUMP(DATE'2016-03-17')
--------------------------------
Typ=13 Len=8: 224,7,3,17,0,0,0,0
SQL> INSERT INTO t SELECT to_date('17-DEC-1980 12:13:14','DD-MON-YYYY HH24:MI:SS') FROM dual;
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT DUMP(col) FROM t;
DUMP(COL)
--------------------------------------------------------------------------------
Typ=12 Len=7: 120,116,3,17,18,6,55
Typ=12 Len=7: 119,180,12,17,13,14,15
SQL>
、それはタイプ12を使用しています。 2番目のタイプ13は、文字列リテラルを日付関数を使用して日付に変換する場合や、SYSDATE
/CURRENT_DATE
のような内部日付関数によって返された日付の場合に使用されます。
Unixのタイムスタンプを-4713から9999の範囲で保存する必要があるのでしょうか。 –
@AlvaroGonzalez:それは14711年になるでしょう。何年もの何秒? 1年に365.25日があるとすれば、1年に31557600秒があり、14711年に464,243,853,600秒があることを意味します。したがって、39ビットの値(最大= 549,755,813,888)がそれを処理します。 64ビットの数字は、forseeable(およそ584,542,041,377)の将来のためにそれを扱います:-) –