Oracle 10g でテーブルを作成し、日付列の日付形式を指定したいと考えています。以下の構文を使用する場合:
create table datetest(
........
startdate date);
次に、日付列は、DD-MON-YY
私が望まない日付形式を受け入れます。
日付列の構文をMM-DD-YYYY
これを続行する方法を教えてください。
よろしく、
ADATE
には固有の形式はありません。たまたま日付を表すのは単なる文字列ではありません。Oracle には、日付値を格納するための独自の内部形式があります。
実際の日付値を文字列に変換する必要がある場合、またはその逆の変換が必要な場合にフォーマットが役立ちます。これはもちろん、インタラクティブに日付を文字列として書き出すため、頻繁に発生します。
データベースのデフォルトの日付形式は、NLS_DATE_FORMAT
おそらく設定されている settings によって決まりますDD-MON-YYYY
(アメリカ英語ロケールのデフォルト設定だと思います)。便宜上、データベース レベルまたは単一のセッションでこれを変更できますが、一般的には、コードが別の環境で実行された場合にエラーが発生したり、さらに悪いことに間違った結果が得られたりしないように、明示的に記述する方が安全なプログラミング方法です。 .
日付値を明確に指定する最も簡単な方法は、日付リテラルです。これは、「date」という単語の後に、YYYY-MM-DD 形式で日付を表す文字列が続きますdate '2012-11-13'
。Oracle パーサーは、これを対応する内部日付値に直接変換します。
別の形式を使用する場合は、コードで目的の形式モデルで TO_CHAR/TO_DATE を明示的に使用することをお勧めします。例:
INSERT INTO my_table (my_date) VALUES ( TO_DATE( '11-13-2012', 'MM-DD-YYYY' ) );
SELECT TO_CHAR( my_date, 'MM-DD-YYYY' ) FROM my_table;
日付には、あなたが提案しているような形式はありません。これらは 7 バイトの数値として内部的に保存されます。選択時に日付をフォーマットするには、使用してくださいTO_CHAR(yourdatefield, 'format')
フォーマットはすべてここに示されています: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34924
eg to_char(startdate, 'mm-dd-yyyy')