今日プログラムを作っていてオラクルデータベースから取得した日付をプログラムに表示する部分があった。日頃からオラクルの日付フォーマット書式になれていないくろねこは、Webサイトで表現を扱っているところを探しコーディングするのだが、そのとき気づいた。
日付書式セパレータに'T'がない!ISOでは日付書式をIS0 8601として定義していて、以下の形式で表すらしいのだが...
- 年のみ
YYYY(例:2001) - 年月
YYYY-MM(例:2001-08) - 年月日
YYYY-MM-DD(例:2001-08-02) - 年月日および時分
YYYY-MM-DDThh:mmTZD(例:2001-08-02T10:45+09:00) - 年月日および時分秒
YYYY-MM-DDThh:mm:ssTZD(例:2001-08-02T10:45:23+09:00) - 年月日および時分秒および小数部分
YYYY-MM-DDThh:mm:ss.sTZD(例:2001-08-02T10:45:23.5+09:00)
またOracleで日付をフォーマットする際には TO_CHAR を使うと思うのだが、Tが使えないと言うことは
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD''T''HH24:MI:SS') FROM DUAL;
の様な書き方が出来ないってこと?
ちなみにDelphiでは、
FormatDateTime('yyyy-mm-dd''T''hh:nn:ss', 日付);
と書けばISO対応可能でした。
ダメじゃんオラクル!
Delphiでも ISO タイプの書式付き文字列に出力は可能でしたが、日付と時刻の間がスペースでないと、日付型への取り込みはだめでした。
以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。