こんにちは、さるまりんです。
DBのTimestamp型のカラムのデータを書式を指定して取得するとき、
1. 一度DBからそのまま取得して、(JavaやPHP等で書かれた)プログラム側でフォーマット
2. DBで利用できる関数でフォーマット
のどちらかになると思います。
今回は後者の2です。
PostgreSQLのto_char()
関数を利用してTimestampを書式を指定して文字列として取得します。
Timestampをyyyy/mm/dd hh:mm:ssの書式で取得
to_char()
の使い方は以下の通りです。
to_char([Timestamp型のデータ], '書式の文字列')
例えば
to_char(current_timestamp, 'YYYY/MM/DD HH24:MI:SS')
で、現在日時をyyyy/mm/dd hh:mm:ssの文字列として取得できます。
このto_char()
で日時に使える書式文字列として次のようなものがあります。
パターン | 書式 |
HH12 | 時 (01〜12) |
HH24 | 時 (00〜23) |
MI | 分 (00〜59) |
SS | 秒 (00〜59) |
MS | ミリ秒 (000〜999) |
AM, am, PM, pm | 午前 or 午後 |
YYYY | 年 (4桁以上) |
MM | 月 (01〜12) |
DD | 日 (01〜31) |
他にも'Month'
や'Day'
で月名や曜日の文字列を取得したりすることもできます。
が、よく使うのは
'YYYY/MM/DD HH24:MI:SS'
や'YYYY-MM-DD HH24:MI:SS'
、'YYYYMMDDHH24MISS'
でしょうか。
プログラムを書いている時、データ型を合わせていないと動かないことがあったりします。
このケースでは文字列に直していないといけない場合です。
逆に文字列ではなくTimestamp型が必要な時にはto_timestamp()
。数値が必要な場合はto_number()
と利用できる関数があります。それらについては改めてまとめたいと思います。
違う型を一緒に扱う時はキャストだけで済んだら楽なんですが、厳密に変換した方が動作が安心ということもありますね。
読んでくださってありがとうございました。
それではまた!