MySQLで日付・時刻の処理をDATE_FORMAT()関数に任せる方法
MySQLでは、DATE_FORMAT()関数を利用することで、日付や時刻の処理(フォーマット変換)をデータベース側に任せることができます。この関数は、引数として渡したフォーマット指定子に基づいて、値を整形して返します。
日付のみを取り出す例
日付に関するフォーマット指定子をDATE_FORMAT()関数に渡すと、MySQLは日付部分だけを処理して返します。
mysql> SELECT DATE_FORMAT("2017-10-22 13:03:45", "%Y %M %D") AS 'OFFLOADED DATE';
+-------------------+
| OFFLOADED DATE |
+-------------------+
| 2017 October 22nd |
+-------------------+
1 row in set (0.00 sec)
上記の例では、「%Y(年)」「%M(月の英語名)」「%D(序数接尾辞付きの日)」という指定子によって、“2017 October 22nd” という形式で日付が表示されています。
時刻のみを取り出す例
一方、時刻に関するフォーマット指定子を渡すと、時刻部分だけが処理されます。
mysql> SELECT DATE_FORMAT("2017-10-22 13:03:45", "%h %i %s %p") AS 'OFFLOADED TIME';
+----------------+
| OFFLOADED TIME |
+----------------+
| 01 03 45 PM |
+----------------+
1 row in set (0.00 sec)
こちらの例では、「%h(12時間制の時)」「%i(分)」「%s(秒)」「%p(AM/PM)」を使用し、“01 03 45 PM” という形式で時刻が出力されました。
よく使われる主なフォーマット指定子
- %Y:4桁の年(例:2017)
- %m:2桁の月(01〜12)
- %M:月の完全な英語名(例:October)
- %d:2桁の日(01〜31)
- %D:英語の序数接尾辞付きの日(例:22nd)
- %h:12時間制の時(01〜12)
- %H:24時間制の時(00〜23)
- %i:分(00〜59)
- %s:秒(00〜59)
- %p:AM または PM
このように、アプリケーション側で日付や時刻を加工する代わりに、SQLクエリの中で直接フォーマットを指定できます。その結果、処理の効率化とコードの簡潔化が期待でき、表示形式の変更にも柔軟に対応できます。
-
MySQLで時間に関係なく日付ごとにデータをグループ化する方法
テーブルに同じ日付でも時刻が異なるレコードが複数含まれている場合、GROUP BY DATE() を使えば、時刻を無視して日付単位でデータを簡単にグループ化できます。この記事では、実際にテーブルを作成し、日付ごとのグループ化を行う手順を解説します。サンプルテーブルを作成するまず、DATETIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable692 (DueDatetime datetime);Query OK, 0 rows affected (0.97 sec)テストデータを挿入する次に、INSERT文を使っていくつかのレコードを挿入し
-
MySQLで日付形式を変換・更新する方法をわかりやすく解説
はじめにMySQLでは、文字列として保存された日付データをSTR_TO_DATE()関数を使って正しい日付形式に変換できます。本記事では、実際のSQL文の例を通じて、日付形式の変換手順を段階的に解説します。1. サンプルテーブルの作成まず、日付データを文字列型(VARCHAR)で格納するテーブルを作成します。mysql> create table DemoTable630 (ArrivalDate varchar(100));Query OK, 0 rows affected (0.55 sec)2. テストデータの挿入次に、INSERT文を使って「YYYY-DD-MM」形式(年-日-月