MySQLでデータベースを扱っていると、DATETIME
やDATE
型の日時を読みやすく整形したい場面がよく出てきますよね。
たとえば、Web画面に「2025年5月22日(木) 14:30」と表示したい場合、SQLでどのようにフォーマットすればよいのでしょうか?
今回は、MySQLでの日時フォーマットの基本から応用まで、DATE_FORMAT()
関数の使い方、よく使うパターン集、注意点まで丁寧に解説します。
MySQLにおける日時型の基本

まずは、MySQLの日時型について整理しておきましょう。
型 | 内容 | 例 |
---|---|---|
DATE | 年-月-日 | 2025-05-22 |
DATETIME | 年-月-日 時:分:秒(秒精度) | 2025-05-22 14:30:00 |
TIMESTAMP | UNIXタイムスタンプと似た形式 | 2025-05-22 14:30:00 |
画面に表示する日時はSQL側で整形することが多く、DATE_FORMAT()
がその中心的な役割を担います。まずは基本的な使い方を見てみましょう。
DATE_FORMAT()関数の使い方
DATE_FORMAT()
関数を使えば、日時を好きな形式に変換できます。
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s');
-- 出力例:2025/05/22 14:30:00
基本的な構文
DATE_FORMAT(日付カラムまたは関数, '書式')
実際の使用例
SELECT DATE_FORMAT(order_date, '%Y年%m月%d日 %H時%i分') AS formatted_date
FROM orders;
構文自体はシンプルなので、覚えやすいですね。
主なフォーマット指定子一覧
よく使う指定子をまとめました。
指定子 | 意味 | 出力例 |
---|---|---|
%Y | 年(4桁) | 2025 |
%y | 年(2桁) | 25 |
%m | 月(2桁) | 05 |
%c | 月(0省略) | 5 |
%d | 日(2桁) | 22 |
%e | 日(0省略) | 22 |
%H | 時(24時間) | 14 |
%i | 分 | 30 |
%s | 秒 | 00 |
%W | 曜日(フル) | Thursday |
%a | 曜日(短縮) | Thu |
%p | AM/PM | PM |
この表を参考にすれば、必要な形式がすぐに作れます。
実用的なフォーマット例
実際の開発でよく使う形式をまとめました。
目的 | SQL例 | 出力例 |
---|---|---|
年月日(スラッシュ区切り) | DATE_FORMAT(NOW(), '%Y/%m/%d') | 2025/05/22 |
日本語表示 | DATE_FORMAT(NOW(), '%Y年%m月%d日') | 2025年05月22日 |
時刻のみ表示 | DATE_FORMAT(NOW(), '%H:%i:%s') | 14:30:00 |
曜日を含める | DATE_FORMAT(NOW(), '%Y/%m/%d (%a)') | 2025/05/22 (Thu) |
用途に合わせて使い分けられるので、とても便利です。
日付の抽出・変換に便利な関数

DATE_FORMAT()
以外にも、便利な関数がたくさんあります。
関数 | 説明 | 例 |
---|---|---|
CURDATE() | 現在の日付 | 2025-05-22 |
NOW() | 現在の日時 | 2025-05-22 14:30:00 |
DATE() | 日時から日付を抽出 | DATE(order_date) |
TIME() | 日時から時刻を抽出 | TIME(order_date) |
STR_TO_DATE() | 文字列→日付型に変換 | STR_TO_DATE('2025/05/22', '%Y/%m/%d') |
これらの関数を組み合わせることで、より複雑な処理もできるようになります。
よくあるエラーと対処法
実際に使っていると、こんなエラーに遭遇することがあります。
書式が正しくない
SELECT DATE_FORMAT(NOW(), 'yyyy-mm-dd'); -- NG(MySQLでは%付き)
正しくは:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
MySQLでは必ず%
をつけることを忘れないでください。
NULLが返る
NULL
の値をDATE_FORMAT()
に使うと結果もNULL
になります。
対策:IFNULL()で代替値を用意しましょう
SELECT DATE_FORMAT(IFNULL(updated_at, NOW()), '%Y/%m/%d');
エラーが出たときは、まず書式が正しいかチェックしてみてくださいね。
まとめ
MySQLの日時フォーマットを正しく使いこなすことで、読みやすく整ったデータ表示や出力が可能になります。
特にWebアプリケーションとの連携では、SQL側での整形処理が実装をシンプルに保つ鍵となります。
この記事のポイントまとめ
- 日時整形には
DATE_FORMAT()
を使う %Y-%m-%d %H:%i:%s
が基本形- 日本語表記や曜日も簡単に追加できる
STR_TO_DATE()
で文字列を日時型に変換可能
コメント