オラクルって ISO 対応できてへんやん

今日プログラムを作っていてオラクルデータベースから取得した日付をプログラムに表示する部分があった。日頃からオラクルの日付フォーマット書式になれていないくろねこは、Webサイトで表現を扱っているところを探しコーディングするのだが、そのとき気づいた。
日付書式セパレータに'T'がない!ISOでは日付書式をIS0 8601として定義していて、以下の形式で表すらしいのだが...

  1. 年のみ
    YYYY(例:2001)
  2. 年月
    YYYY-MM(例:2001-08)
  3. 年月日
    YYYY-MM-DD(例:2001-08-02)
  4.  年月日および時分
    YYYY-MM-DDThh:mmTZD(例:2001-08-02T10:45+09:00)
  5. 年月日および時分秒
    YYYY-MM-DDThh:mm:ssTZD(例:2001-08-02T10:45:23+09:00)
  6. 年月日および時分秒および小数部分
    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 タイプの書式付き文字列に出力は可能でしたが、日付と時刻の間がスペースでないと、日付型への取り込みはだめでした。

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/050107_oracle_iso