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() は日付部分のみを比較するため、どちらを使っても計算結果に影響しません。経過日数の集計や期限切れデータの抽出など、さまざまな場面で活用できる便利な関数です。
-
Javaで現在の日付と時刻を取得する4つの方法をサンプルコード付きで解説
Javaで現在の日付や時刻を取得する方法はいくつかあります。この記事では、代表的な4つの方法をサンプルコードと実行結果とともにわかりやすく解説します。 1. Dateクラスのコンストラクタを使用する java.util.Dateクラスの引数なしのコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。最も古典的でシンプルな方法です。 サンプルコード import java.util.Date; public class CreateDate { public static void main(String args[]) { &nbs
-
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 を組み合わせれば、任意の形式で現在日付を出力できます。 サンプ