【保存版】MySQLの日時フォーマット完全ガイド|DATE_FORMAT()の使い方から実務で役立つ例まで解説

プログラミング・IT

MySQLでデータベースを扱っていると、DATETIMEDATE型の日時を読みやすく整形したい場面がよく出てきますよね。

たとえば、Web画面に「2025年5月22日(木) 14:30」と表示したい場合、SQLでどのようにフォーマットすればよいのでしょうか?

今回は、MySQLでの日時フォーマットの基本から応用までDATE_FORMAT()関数の使い方、よく使うパターン集、注意点まで丁寧に解説します。


スポンサーリンク

MySQLにおける日時型の基本

まずは、MySQLの日時型について整理しておきましょう。

内容
DATE年-月-日2025-05-22
DATETIME年-月-日 時:分:秒(秒精度)2025-05-22 14:30:00
TIMESTAMPUNIXタイムスタンプと似た形式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
%i30
%s00
%W曜日(フル)Thursday
%a曜日(短縮)Thu
%pAM/PMPM

この表を参考にすれば、必要な形式がすぐに作れます。


実用的なフォーマット例

実際の開発でよく使う形式をまとめました。

目的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()で文字列を日時型に変換可能

コメント

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