バナー画像

MySQLで日付型のデータを出力する際「YYYY-MM-DD」という形以外のフォーマットで出力できるということをご存知でしょうか。そこで便利なのが「DATE_FORMAT」という関数です。今回はこちらのフォーマットを使用し、日付型データをフォーマットしていく方法についてご紹介していきます。

本記事の要点
  • 日付型データの概要
  • MySQLで日付型データをフォーマット

日付型データとは?

そもそもMySQLの日付型データとは何でしょうか。本コラムで日付型データとして指すのはDATE型DATETIME型TIMESTAMP型の3種類のデータ型のことです。この3つの特徴についても押さえておきましょう。

日付型データ
  • DATE型 → 日付部分のみを含む値
  • DATETIME型 → 日付と時間の両方の部分を含む値
  • TIMESTAMP型 → 現在の日付および時間への自動更新機能

それぞれの形の初期フォーマットも確認しておきましょう。

日付型データの初期フォーマット
  • DATE型 → YYYY-MM-DD(例:2020-01-27)
  • DATETIME型 → YYYY-MM-DD HH:MM:SS(例:2020-01-27 16:47:12)
  • TIMESTAMP型 → YYYY-MM-DD HH:MM:SS(例:2020-01-27 16:47:12)

すでに触れた通りDATE型が日付までしか表示できないのに対し、DATETIME型やTIMESTAMP型は日付と時間の両方を取得することができるデータ型となっています。

MySQLで日付型をフォーマットしてみよう

それでは早速、先ほど確認した3つの日付型データを用いて、フォーマットを変えてみましょう。ここでは日付型データのフォーマットを変更できるDATE_FORMAT関数を使っていきます。

DATE型をフォーマット

まずはDATE型をフォーマットしてみましょう。まずは普通にDATE型を出力してみます。

通常のDATE型を出力してフォーマットを確認

mysql> SELECT '2020-01-27';
+------------+
| 2020-01-27 |
+------------+
| 2020-01-27 |
+------------+

DATE_FORMAT関数を使用

mysql> SELECT DATE_FORMAT('2020-01-27', '%Y年%m月%d日');
+----------------------------------------------+
| DATE_FORMAT('2020-01-27', '%Y年%m月%d日')    |
+----------------------------------------------+
| 2020年01月27日                               |
+----------------------------------------------+
1 row in set (0.00 sec)

DATE_FORMAT関数を用いることによって「2020-01-27」というDATE型のデータを「2020年01月27日」というフォーマットに変えることができました。では、ここでDATE_FORMAT関数が何をしているかについて見ていきましょう。

DATE_FORMAT関数の働き

DATE_FORMAT関数は以下のように記載されることで、第一引数に入った日付データを、第二引数のフォーマットへと変換してくれます。

DATE_FORMAT('日付データ', 'フォーマット後の形式');

先ほどのDATE型では、以下のようなフォーマット指定が第二引数に用いられました。

DATE_FORMATのフォーマット指定
  • %Y → 年を数字の4桁で表示する
  • %m → 月を数字の2桁で表示する
  • %d → 日付を数字の2桁で表示する

他にもDATE_FORMATのフォーマット指定には以下のようなものがあります。一部を見ていきましょう。

DATE_FORMATのフォーマット指定
  • %D → 英語のサフィクスを持つ日付 (0th, 1st, 2nd, 3rd, …)で表示する
  • %a → 簡略曜日名 (Sun..Sat)で表示する
  • %H → 時間 (00..23)で表示する
  • %j → 年間通算日 (001..366)で表示する
  • %M → 月名 (January..December)で表示する
  • %T → 時間、24 時間単位 (hh:mm:ss)で表示する
  • %W → 曜日名 (Sunday..Saturday)で表示する
  • %y → 年、数字 (2 桁)で表示する

上記のDATE_FORMATのフォーマット指定を見ながら、以下のハンズオンも実際に手を動かして体験していきましょう。

DATETIME型をフォーマット

次にDATETIME型をフォーマットしていきましょう。

通常のDATETIME型を出力してフォーマットを確認

mysql> SELECT '2020-01-27 19:22:19';
+---------------------+
| 2020-01-27 19:22:19 |
+---------------------+
| 2020-01-27 19:22:19 |
+---------------------+
1 row in set (0.00 sec)

DATE_FORMAT関数を使用

mysql> SELECT DATE_FORMAT('2020-01-27 19:22:19', '%W %M %Y');
+------------------------------------------------+
| DATE_FORMAT('2020-01-27 19:22:19', '%W %M %Y') |
+------------------------------------------------+
| Monday January 2020                            |
+------------------------------------------------+
1 row in set (0.00 sec)

指定通り、日が曜日になり、月が英語名になり、秒数が省略されましたね。他の例も試してみましょう。

mysql> SELECT '2020-01-27 19:22:19';
+---------------------+
| 2020-01-27 19:22:19 |
+---------------------+
| 2020-01-27 19:22:19 |
+---------------------+
1 row in set (0.00 sec)

DATE_FORMAT関数を使用

mysql> SELECT DATE_FORMAT('2020-01-27 19:22:19','%D %y %a %d %m %b %j');
+-----------------------------------------------------------+
| DATE_FORMAT('2020-01-27 19:22:19','%D %y %a %d %m %b %j') |
+-----------------------------------------------------------+
| 27th 20 Mon 27 01 Jan 027                                 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

指定したフォーマットが複雑だったかもしれませんが、1つずつ分解してみればまったく難しいことはありません。このようにフォーマットが複雑になったとしても、DATE_FORMAT関数を使えば簡単にDATETIME型のデータを変形できるのです。

まとめ

今回はDATE_FORMATという関数を用いて、日付型データをフォーマットしていく方法についてご紹介していきました。出力する際に、指定の日付データの形を整形したいという場合にこの関数が有効です。DATE_FORMATには今回使いきれなかったフォーマットの指定がさまざまにありますので、ぜひ試してみてくださいね。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。