【PostgreSQL】日付型を任意の形にフォーマットする方法を解説【TO_CHAR】

スポンサーリンク

PostgreSQLでは、DATE 型や TIMESTAMP 型などの日付データを扱うことができますが、画面表示や帳票出力の際には、「YYYY/MM/DD」や「2025年4月7日」といった形に整形したい場面が多くあります。

そんな時に便利なのが、TO_CHAR 関数です。この関数を使えば、日付型のデータを任意のフォーマットで文字列に変換することができます。

本記事では、TO_CHAR 関数の基本的な使い方から、実務でよく使うフォーマット例、そして応用的なテクニックまでをわかりやすく解説していきます。PostgreSQLで日付のフォーマットを自由にカスタマイズしたい方は、ぜひ参考にしてみてください。

TO_CHAR関数の書き方

PostgreSQLで日付型を任意の形式に変換したい場合は、TO_CHAR 関数を使います。基本的な構文は以下の通りです。

TO_CHAR(対象の日付, 'フォーマット文字列')

例えば、現在の日付を「YYYY/MM/DD」の形式で表示したい場合は、次のように記述します。

SELECT TO_CHAR(current_date, 'YYYY/MM/DD');

実行結果

2025/04/07

このように、日付型を文字列としてフォーマットすることができます。

フォーマット文字列に指定できる要素は多岐に渡り、例えば「年(YYYY)」「月(MM)」「日(DD)」のような基本的なものから、「曜日」や「時間」なども指定可能です。

よく使われるフォーマット例一覧

TO_CHAR 関数で使用できるフォーマット文字列にはさまざまな種類があります。ここでは、日付や時刻の表示でよく使われるものを一覧で紹介します。

フォーマット意味例(2025年4月7日 14時30分45秒の場合)
YYYY西暦4桁2025
YY西暦下2桁25
MM月(2桁)04
DD日(2桁)07
HH24時(24時間制)14
MI30
SS45
Day曜日名(英語、右側にスペースあり)Monday
Dy曜日略称(英語、右側にスペースあり)Mon
D曜日を数値で(1=日曜)2(例:月曜日)

これらのフォーマットを組み合わせることで、さまざまな表示スタイルを実現できます。

注意点と補足

TO_CHAR 関数は非常に便利ですが、使う際に気をつけたいポイントがいくつかあります。

ロケールによる曜日・月名の表示

DayDyMonth などのフォーマットを使うと、曜日名や月名が表示されますが、これらはデフォルトで英語表記になります。

SELECT TO_CHAR(current_date, 'Day, Month');

実行結果の例

Monday   , April

日本語で表示したい場合は、アプリケーション側で変換処理を行うか、SET lc_time などでロケールを変更する必要があります。ただし、ロケール変更はDB全体に影響するため、慎重に扱いましょう。

日付型と時刻型の違いに注意

  • DATE型は日付のみ(年・月・日)
  • TIMESTAMP型は日付+時間(年・月・日・時・分・秒)

例えば、current_timestampTIMESTAMP型なので、時間部分も含まれます。

SELECT TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI:SS');

これに対して、current_dateDATE型のため、時間のフォーマットをしても反映されません。

まとめ

PostgreSQLで日付型を任意の形式に変換したいときは、TO_CHAR関数を使えば柔軟に対応できます。
フォーマット文字列を工夫することで、「YYYY/MM/DD」や「2025年4月7日(月)」といった見やすい形に整えることができ、実務でのレポート出力や画面表示にも役立ちます。

また、曜日や月名の扱い、ゼロ埋めの有無など、細かな調整も可能です。
一方で、ロケール設定やフォーマットミスによるエラーには注意が必要なので、必要に応じて事前に確認しておくと安心です。

ぜひこの記事を参考に、PostgreSQLでの日付フォーマットを自分の用途に合わせて活用してみてください!

PostgreSQL
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました