argius note

プログラミング関連

Oracle Date型をTO_CHARなしで「日時」表示する

OracleはTIMESTAMP型があるのに、伝統的にDATE型を使うので、タイムスタンプ的な列を出力するときにちょっと面倒。
通常はGUIのデータベースビューアを使いますが、場合によってはSQL*PLUSを使う必要があります。列名を指定すれば、

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL

とすれば年月日時分秒表示ができます。でも、"*"(全列)の場合はどうするのでしょうか。


当然のごとく、対処方法があります。"NLS_DATE_FORMAT"というパラメータにフォーマットを設定します。(*サポートしているバージョンは不明)

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'

これを発行すれば、セッション内のDATE型の表示が "TO_CHAR(date-field, 'YYYY-MM-DD HH24:MI:SS')" としたのと同じになります。