データベース - SQL 関数 - 書式設定 TO_CHAR・TO_DATE・TO_TIMESTAMP

クラウディア 
1. 概要
2. TO_CHAR 文字列型へ変換
3. TO_DATE・TO_TIMESTAMP 日時型・・・へ変換

1. 概要

 わたしが、プログラミングするときにいつも問題になるのは、日時のデータと文字列との相互変換です。  これらを「SQL」で実現する関数が、以下に述べるものです。  本ページは、下記のサイトを参考にさせていただきました。
TO_CHAR 日付や数値を文字列へ変換する Oracle SQL 関数

2. TO_CHAR 文字列型へ変換

 「TO_CHAR」は、日時型・日付型・時刻型・タイムスタンプ型を一定の書式で、文字列へと変換します。

TO_CHAR(カラム, 'YYYY-MM-DD HH24:MI:SS')
 てな感じです。  書式として、下記のものが使えます。
 書式   意味   備考 
YYYY 西暦年4桁
YY 西暦年下2桁
MM
DD
HH 12時間表記の時
HH24 24時価表記の時
MI
SS
FF3 ミリ秒
FF6 マイクロ病

 他に「RR」とかあるようですが、使ったことがない。
 基本、数字が入らないものは、ゼロパディングされます。

3. TO_DATE・TO_TIMESTAMP 日時型・・・へ変換


TO_DATE(文字列, 'YYYY-MM-DD HH24:MI:SS')
 とか

TO_TIMESTAMP(文字列, 'YYYY-MM-DD HH24:MI:SS')
 で、文字列を日時型・日付型・時刻型・タイムスタンプ型へ変換します。  「DB2」では、「TO_DATE」でタイプスタンプ型にすることが可能であったように記憶しているのですが・・・。  「postgreSQL9.6」で、「TO_DATE」を使用して、タイムスタンプ型へ入力したところ、時刻以下が「00:00:00」になってしまいました。  「postgreSQL」では、タイムスタンプ型にするには明示的に TO_TIMESTAMP を使うべきのようです。