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

MySQLで日付レコードと現在の日付の差分を取得する方法(DATEDIFF関数の使い方)

現在の日付が「2019-09-06」であると仮定して、テーブルに保存された日付レコードと現在の日付との差分(日数)を取得する方法を解説します。MySQLでは、DATEDIFF() 関数を使うことで、2つの日付の差を簡単に計算できます。

1. サンプルテーブルを作成する

まず、日付型(DATE)のカラムを持つテーブルを作成します。

mysql> create table DemoTable
(
    AdmissionDate date
);
Query OK, 0 rows affected (0.54 sec)

2. テーブルにレコードを挿入する

INSERT文を使って、いくつかの日付データを登録します。

mysql> insert into DemoTable values('2019-01-08');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2018-09-06');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2016-10-26');
Query OK, 1 row affected (0.17 sec)

3. 登録したレコードを確認する

SELECT文で全レコードを表示します。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+---------------+
| AdmissionDate |
+---------------+
| 2019-01-08    |
| 2018-09-06    |
| 2016-10-26    |
+---------------+
3 rows in set (0.00 sec)

4. 現在の日付との差分を取得するクエリ

日付レコードと現在の日付の差を求めるには、DATEDIFF() 関数を使用します。第1引数に NOW()(現在の日時)、第2引数に対象の日付カラムを指定します。

mysql> select datediff(now(),AdmissionDate) from DemoTable;

実行結果:

+-------------------------------+
| datediff(now(),AdmissionDate) |
+-------------------------------+
| 241                           |
| 365                           |
| 1045                          |
+-------------------------------+
3 rows in set (0.00 sec)

DATEDIFF関数のポイント

DATEDIFF(date1, date2) は、「date1 − date2」の日数を返す関数です。今回の例では NOW() を第1引数に指定しているため、各レコードの日付から本日までの経過日数が取得できます。

  • 2019-01-08 から 2019-09-06 までは 241日
  • 2018-09-06 から 2019-09-06 まではちょうど 365日
  • 2016-10-26 から 2019-09-06 までは 1045日

なお、CURDATE() を使っても同じ結果が得られます。NOW() は日時(DATETIME)を返しますが、DATEDIFF() は日付部分のみを比較するため、どちらを使っても計算結果に影響しません。経過日数の集計や期限切れデータの抽出など、さまざまな場面で活用できる便利な関数です。

  1. Javaで現在の日付と時刻を取得する4つの方法をサンプルコード付きで解説

    Javaで現在の日付や時刻を取得する方法はいくつかあります。この記事では、代表的な4つの方法をサンプルコードと実行結果とともにわかりやすく解説します。 1. Dateクラスのコンストラクタを使用する java.util.Dateクラスの引数なしのコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。最も古典的でシンプルな方法です。 サンプルコード import java.util.Date; public class CreateDate {    public static void main(String args[]) {   &nbs

  2. Javaで現在の日付を取得する4つの方法|Date・LocalDate・Calendar・java.sql.Dateの使い方

    Javaで現在の日付(システム日付)を取得する方法は複数あります。古くから使われている java.util.Date や Calendar クラスから、Java 8以降で推奨される LocalDate など、状況に応じて使い分けが可能です。ここでは代表的な4つの方法を、サンプルコードと実行結果付きで解説します。 1. java.util.Dateクラスのコンストラクタを使う java.util.Date クラスの引数なしコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。これに SimpleDateFormat を組み合わせれば、任意の形式で現在日付を出力できます。 サンプ