MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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クエリの中で直接フォーマットを指定できます。その結果、処理の効率化とコードの簡潔化が期待でき、表示形式の変更にも柔軟に対応できます。

  1. MySQLで時間に関係なく日付ごとにデータをグループ化する方法

    テーブルに同じ日付でも時刻が異なるレコードが複数含まれている場合、GROUP BY DATE() を使えば、時刻を無視して日付単位でデータを簡単にグループ化できます。この記事では、実際にテーブルを作成し、日付ごとのグループ化を行う手順を解説します。サンプルテーブルを作成するまず、DATETIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable692 (DueDatetime datetime);Query OK, 0 rows affected (0.97 sec)テストデータを挿入する次に、INSERT文を使っていくつかのレコードを挿入し

  2. 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」形式(年-日-月