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

MySQLで現在の日付とテーブル内の日付レコードの差を求める方法

現在の日付とテーブルに保存された日付レコードの差(日数)を求めるには、MySQLの DATEDIFF() 関数を使用します。この関数は、2つの日付の差を日数で返してくれる便利な関数です。

ここでは、実際にテーブルを作成し、データを挿入して、現在の日付との差を計算する手順を順番に見ていきましょう。

1. テーブルの作成

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

mysql> create table DemoTable1446
-> (
-> DueDate date
-> );
Query OK, 0 rows affected (1.42 sec)

2. レコードの挿入

次に、INSERT文を使ってサンプルデータを登録します。

mysql> insert into DemoTable1446 values('2019-01-21');
Query OK, 1 row affected (0.69 sec)
mysql> insert into DemoTable1446 values('2019-02-01');
Query OK, 1 row affected (0.44 sec)
mysql> insert into DemoTable1446 values('2019-09-30');
Query OK, 1 row affected (0.16 sec)

3. 登録したレコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1446;

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

+------------+
| DueDate |
+------------+
| 2019-01-21 |
| 2019-02-01 |
| 2019-09-30 |
+------------+
3 rows in set (0.10 sec)

4. 現在の日付を確認する

CURDATE() 関数を使うと、現在の日付を取得できます。

mysql> select curdate();

実行結果:

+------------+
| curdate() |
+------------+
| 2019-10-01 |
+------------+
1 row in set (0.12 sec)

5. 現在の日付とレコードの日付の差を求める

以下のクエリを実行すると、現在の日付とテーブル内の各日付レコードとの差(日数)を取得できます。

mysql> select datediff(curdate(),DueDate) from DemoTable1446;

実行結果:

+-----------------------------+
| datediff(curdate(),DueDate) |
+-----------------------------+
| 253 |
| 242 |
| 1 |
+-----------------------------+
3 rows in set (0.00 sec)

解説

DATEDIFF(日付1, 日付2) は「日付1 − 日付2」の差を日数で返します。上記の例では、現在の日付(2019-10-01)から各レコードの日付を引いているため、以下のような結果になっています。

  • 2019-01-21 → 253日前
  • 2019-02-01 → 242日前
  • 2019-09-30 → 1日前

なお、第1引数と第2引数の順序を逆にすると負の値が返されるため、引数の指定順序には注意が必要です。期限日までの残り日数の計算や、経過日数の集計など、さまざまな場面で活用できるので、ぜひ覚えておきましょう。

  1. MySQLでドメインレコードと検索ボリュームから人気ドメインを抽出する方法

    MySQLのテーブルに保存されたURLやドメイン名、検索回数などのデータから、検索ボリュームが最も高い人気ドメインを特定したいケースは多くあります。このような場合、GROUP BY句とORDER BY句を組み合わせて使用することで、簡単に集計・並べ替えが可能です。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、人気ドメインを抽出するクエリの手順を詳しく解説します。1. サンプルテーブルの作成まず、URL・ドメイン名・検索回数を格納するテーブルを作成します。mysql> create table DemoTable-> (-> URL varchar(40),-

  2. MySQLで現在の日付と翌日のレコードを条件に特定の列を抽出する方法

    MySQLでは、CURDATE()関数を使うことで、現在の日付やその翌日に該当するレコードを簡単に抽出できます。この記事では、実際のサンプルを使いながら、現在の日付と翌日の出荷日を持つレコードから特定の列を選択して取得する方法を解説します。 1. 現在の日付を確認する まず、curdate()関数で現在の日付を取得してみましょう。 mysql> select curdate(); 実行すると、以下のような結果が表示されます。 +------------+ | curdate() | +------------+ | 2019-12-15 | +------------+ 1 row