MySQLでDATE_FORMAT関数
MySQLのDATE_FORMAT関数は、日付型データを指定したフォーマットで文字列として表示するための関数です。
この関数は、特定のフォーマットを使用して日付や時刻データを出力するのに便利です。
DATE_FORMAT関数を使用することで、データベース内の日付データを必要な形式に変換して表示することができます。
基本的な構文
DATE_FORMAT(date, format)
- date: フォーマットを適用する対象の日付または日時のフィールドです。
これはDATE型、DATETIME型、またはTIMESTAMP型のいずれかである必要があります。
- format: 出力される日付や時刻の形式を指定する文字列です。
このフォーマット文字列内には、MySQLが認識する特定のプレースホルダを含めることができます。
使用例
例えば、ordersというテーブルがあり、order_dateというDATETIME型のカラムがあるとします。
このカラムのデータを「YYYY-MM-DD」形式で取得したい場合は、以下のようにクエリを使用します。
SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;
このクエリは、order_dateカラムの日付を「年-月-日」の形式で表示します。
フォーマット文字列の使用方法
DATE_FORMATで使用できるフォーマット指定子は以下のようなものがあります。
- %Y: 4桁の年(例: 2024)
- %y: 2桁の年(例: 24)
- %M: フルスペルの月名(例: September)
- %m: 2桁の月(例: 09)
- %D: 英語の序数付き日付(例: 3rd)
- %d: 2桁の日付(例: 03)
- %H: 24時間形式の時(例: 14)
- %h: 12時間形式の時(例: 02)
- %i: 分(例: 05)
- %s: 秒(例: 30)
- %p: 午前または午後(AMまたはPM)
例
1. フルスペルの月名と4桁の年を表示
SELECT DATE_FORMAT(order_date, '%M %Y') AS formatted_date FROM orders;
このクエリは、「September 2024」のように月の名前と年を表示します。
2. 英語の序数付き日付を表示
SELECT DATE_FORMAT(order_date, '%W, %D %M %Y') AS formatted_date FROM orders;
このクエリは、「Monday, 3rd September 2024」のように、曜日、序数付き日付、月、年を表示します。
3. 12時間形式での時刻表示
SELECT DATE_FORMAT(order_date, '%h:%i %p') AS formatted_time FROM orders;
このクエリは、「02:05 PM」のように12時間形式で時刻を表示します。
よくある使用シナリオ
1. レポート作成:
日付を「YYYY-MM-DD」や「DD-MM-YYYY」形式でフォーマットして、データの表示を統一します。
例えば、ユーザーに見やすいレポートを作成する場合に使用します。
2. ログファイルの解析:
ログファイルの解析時に、タイムスタンプを人間が読みやすい形式に変換するのに使用します。
3. ウェブアプリケーションでの日付表示:
ウェブアプリケーションで日付を表示する際に、ユーザーのロケールに合わせて日付フォーマットを変更するために使用します。
注意点
- DATE_FORMAT関数は、MySQLサーバーの設定に依存せず、常に英語で月や曜日の名前を表示します。
- 入力する日付が無効な場合や、NULLの場合、DATE_FORMATはNULLを返します。
まとめ
DATE_FORMAT関数は、日付型データを特定のフォーマットで表示するための強力なツールです。
多くのプレースホルダを使用することで、柔軟な形式で日付や時刻を出力できます。