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

MySQLで過去数日間の日付をSELECTして取得する方法

MySQLで現在の日付から数日前の日付を取得したい場合、DATE_ADD()関数を使用します。基本的な構文は以下の通りです。

select date_add(curdate(),interval - 任意の整数値 day);

また、MySQLのDATE_SUB()関数を使っても同様の結果が得られます。

select date_sub(curdate(),interval 任意の整数値 day);

さらに、以下のようにINTERVAL演算子とマイナス記号を組み合わせた、より簡潔な構文も利用できます。

select curdate() - interval 任意の整数値 day;

それでは、上記3つの構文それぞれについて、実際に過去数日間の日付を取得する例を見ていきましょう。

ケース1:DATE_ADD()関数を使う方法

6日前の日付を取得するクエリは以下の通りです。

mysql> select date_add(curdate(),interval -6 day);

実行結果:

+-------------------------------------+
| date_add(curdate(),interval -6 day) |
+-------------------------------------+
| 2018-11-20                          |
+-------------------------------------+
1 row in set (0.00 sec)

現在の日付(curdate())から6日分が差し引かれた日付が返されていることがわかります。

ケース2:DATE_SUB()関数を使う方法

次に、DATE_SUB()関数を使って同じく6日前の日付を取得してみます。クエリは以下の通りです。

mysql> select date_sub(curdate(),interval 6 day);

実行結果:

+------------------------------------+
| date_sub(curdate(),interval 6 day) |
+------------------------------------+
| 2018-11-20                         |
+------------------------------------+
1 row in set (0.00 sec)

DATE_ADD()で負の値を指定した場合と同じ結果になりました。DATE_SUB()は「日付から引く」という意図が明確になるため、可読性の面で好まれることもあります。

ケース3:マイナス(-)記号を使う方法

最後に、関数を使わずにマイナス記号だけで日付を計算する方法です。クエリは以下の通りです。

mysql> select curdate()-interval 6 day;

実行結果:

+--------------------------+
| curdate()-interval 6 day |
+--------------------------+
| 2018-11-20               |
+--------------------------+
1 row in set (0.00 sec)

この構文が最もシンプルで、日常的なクエリでもよく使われています。

実際のテーブルデータへの応用

これらの構文は、単体で日付を表示するだけでなく、WHERE句と組み合わせることで、過去数日間に作成・更新されたレコードを抽出する際にも非常に便利です。

SELECT * FROM your_table
WHERE created_at >= curdate() - INTERVAL 7 DAY;

このように書くことで、「直近7日間」のデータだけを効率よく取得できます。ログ分析やレポート作成など、期間を指定した集計処理でぜひ活用してください。

  1. MySQLのDISTINCTとGROUP BYの違いとは?使い分け方を実例付きで解説

    DISTINCTとGROUP BY、どちらを使うべき? MySQLで重複データを処理する場合、「SELECT DISTINCT」と「GROUP BY」のどちらを使えばよいか迷うことがあります。この記事では、それぞれの特徴と使い分けのポイントを、実際のSQL実行例を交えてわかりやすく解説します。 SELECT DISTINCTで重複する値を除外する SELECT DISTINCTは、指定したカラムの一意な値(重複しない値)を取得するために使います。重複レコードを取り除く目的で利用されるほか、MAXやAVGといった集計関数と組み合わせることも可能です。単一のカラムに対して適用できるのが特徴です。

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected