Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLでの日付計算処理には、データベース毎に様々な関数が用意されています。

本記事では、MySQLを使用して加算・減算・時間差の算出といったSQLでの日付計算処理の使い方についてご紹介していきたいと思います。

ポテパンダの一言メモ

今回のサンプルではMySQLで利用可能な関数をご紹介していきます。

SQLの日付計算:加算処理


まずはSQLでの加算処理についてご紹介していきます。

加算処理用の関数は大きく「ADDTIME(時間用)」「DATE_ADD(単位指定可能)」の2種類の関数が利用可能です。

ADDTIMEの使い方

ADDTIME関数は時間を加算したい場合に利用します。

後述するDATE_ADD関数でも時間の加算は可能ですが、よりシンプルに記述することが可能です。

SELECT ADDTIME(日時, 加算したい時間);

サンプル

実際のサンプルで実行した結果を確認していきましょう。

サンプルでは指定した日時に1時間30分40秒を加算しています。

SELECT ADDTIME('2020-07-27 14:00:00', '01:30:40');

実行した結果が下記の通りです。

+--------------------------------------------+
| ADDTIME('2020-07-27 14:00:00', '01:30:40') |
+--------------------------------------------+
| 2020-07-27 15:30:40                        |
+--------------------------------------------+

DATE_ADDの使い方

DATE_ADD関数は、ユーザーが指定した単位で日付の加算処理を行える関数です。

まずは基本構文を掲載しておきます。

SELECT DATE_ADD(日付, INTERVAL 値 単位);

単位

DATE_ADD関数で単位として設定出来る値の中から、頻繁に利用されるものを下記に掲載します。

  • YEAR
  • MONTH
  • DAY
  • HOUR
  • MINUTE
  • SECOND

サンプル

実際にサンプルでDATE_ADD関数を実行してみたいと思います。

サンプルでは、現在日時より2年後の日付を取得するよう指定しています。

SELECT DATE_ADD(now(), INTERVAL 2 YEAR);

実行した結果が下記の通りです。

+----------------------------------+
| DATE_ADD(now(), INTERVAL 2 YEAR) |
+----------------------------------+
| 2022-07-27 16:09:54              |
+----------------------------------+

SQLの日付計算:減算処理


次にSQLの日付減算処理についてご紹介していきます。

加算処理用の関数は大きく「SUBTIME(時間用)」「DATE_SUB(単位指定可能)」の2種類の関数が利用可能です。

SUBTIMEの使い方

SUBTIMEの使い方は基本的に加算処理で使用したADDTIME関数と同じです。

ADDTIMEをSUBTIMEに変更することで減算処理が実施されます。

SELECT SUBTIME(日時, 減算したい時間);

サンプル

実際のサンプルで実行した結果を確認していきましょう。

サンプルでは、指定した日時から3時間30分30秒減算した日時を抽出します。

SELECT SUBTIME('2020-07-27 17:00:00', '03:30:30');

実行した結果が下記の通りです。

+--------------------------------------------+
| SUBTIME('2020-07-27 17:00:00', '03:30:30') |
+--------------------------------------------+
| 2020-07-27 13:29:30                        |
+--------------------------------------------+

DATE_SUBの使い方

DATE_SUBの使い方に関しては、DATE_ADD関数と基本的に同じです。

DATE_ADDをDATE_SUBに変更することで減算処理が実施されます。

SELECT DATE_SUB(日付, INTERVAL 値 単位);
ポテパンダの一言メモ

単位についてはDATE_ADDと同じなので省略します。

サンプル

実際にサンプルでDATE_SUB関数を実行してみたいと思います。

サンプルでは、現在日時より3ヶ月前の日付を取得するよう指定しています。

SELECT DATE_SUB(now(), INTERVAL 3 MONTH);

実行した結果が下記の通りです。

+-----------------------------------+
| DATE_SUB(now(), INTERVAL 3 MONTH) |
+-----------------------------------+
| 2020-04-27 17:02:34               |
+-----------------------------------+

SQLの日付計算:差分算出


ではもうひとつ日付計算の中でも、2つの日付の差分を算出する処理についてご紹介していきたいと思います。

差分算出用の関数は大きく「TIMEDIFF(時間用)」「DATEDIFF(日付用)」「TIMESTAMPDIFF(単位指定可能)」の3種類の関数が利用可能です。

TIMEDIFFの使い方

TIMEDIFF関数は引数として2つの日時を指定することで、時間に換算した差分を算出してくれます。

SELECT TIMEDIFF(日時, 日時);

サンプル

実際にサンプルでTIMEDIFF関数を実行してみたいと思います。

SELECT TIMEDIFF('2020-07-27 14:00:00', '2020-07-25 13:30:30');

サンプルを実行した結果が下記の通りです。

+--------------------------------------------------------+
| TIMEDIFF('2020-07-27 14:00:00', '2020-07-25 13:30:30') |
+--------------------------------------------------------+
| 48:29:30                                               |
+--------------------------------------------------------+

DATEDIFFの使い方

DATEDIFF関数の使い方も、TIMEDIFF関数と同じく引数に2つの日時を指定するだけです。

DATEDIFF関数では算出結果が日付で返却されます。

SELECT DATEDIFF(日時, 日時);

サンプル

実際にサンプルでDATEDIFF関数を実行してみたいと思います。

SELECT DATEDIFF('2020-07-27 14:00:00', '2020-07-25 13:30:30');

サンプルを実行した結果が下記の通りです。

+--------------------------------------------------------+
| DATEDIFF('2020-07-27 14:00:00', '2020-07-25 13:30:30') |
+--------------------------------------------------------+
|                                                      2 |
+--------------------------------------------------------+

TIMESTAMPDIFFの使い方

TIMESTAMPDIFF関数では、第一引数に単位を指定することで、指定した単位に沿った差分算出結果を返却してくれる関数です。

SELECT TIMESTAMPDIFF(単位, 日付, 日付);
ポテパンダの一言メモ

TIMESTAMPDIFF関数で利用可能な単位も上述した「DATE_ADD」「DATE_SUB」関数と同様のため省略します。

サンプル

実際にサンプルでTIMESTAMPDIFF関数を実行してみたいと思います。

今回のサンプルでは時間単位で指定した日付の差分を算出しています。

SELECT TIMESTAMPDIFF(HOUR, '2020-07-27 14:00:00', '2020-07-25 13:30:30');

サンプルを実行した結果が下記の通りです。

+-------------------------------------------------------------------+
| TIMESTAMPDIFF(HOUR, '2020-07-27 14:00:00', '2020-07-25 13:30:30') |
+-------------------------------------------------------------------+
|                                                               -48 |
+-------------------------------------------------------------------+

さいごに:SQLの日付計算関数はデータベース毎に異なる


本記事では、SQLの日付計算処理で利用出来る関数の使い方をご紹介してきました。

本記事に掲載した内容は全てMySQLでの動作確認を行っております。

データベース毎に用意されている日付計算処理用の関数が異なるため、ご自身で利用するデータベースで提供されている関数に読み替えて各処理を試してみてください。

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

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

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

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

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

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

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

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

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

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

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