MySQLで現在の日付のレコードを除外してすべてのレコードを表示する方法
MySQLでデータを取得する際、今日の日付に該当するレコードを除外し、それ以外のすべてのレコードを表示したいケースがあります。この記事では、CURDATE()関数とDATE()関数を組み合わせることで、現在の日付のレコードを無視してすべてのレコードを取得する方法を解説します。
テーブルの作成
まず、テーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Name varchar(100),
-> DueDate datetime
-> );
Query OK, 0 rows affected (0.54 sec)
レコードの挿入
insertコマンドを使ってテーブルにいくつかのレコードを挿入します。ここでは、現在の日付を「2019-07-05」とします。
mysql> insert into DemoTable values('Chris','2019-06-24');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Chris','2018-01-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Robert','2019-07-05');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('Carol','2019-08-03');
Query OK, 1 row affected (0.22 sec)すべてのレコードを表示する
selectステートメントを使って、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
出力結果
+--------+---------------------+
| Name | DueDate |
+--------+---------------------+
| Chris | 2019-06-24 00:00:00 |
| Chris | 2018-01-01 00:00:00 |
| Robert | 2019-07-05 00:00:00 |
| Carol | 2019-08-03 00:00:00 |
+--------+---------------------+
4 rows in set (0.00 sec)
今日の日付のレコードを除外するクエリ
今日の日付のレコードを除いて、すべての行を選択するクエリは以下の通りです。
mysql> select *from DemoTable where date(DueDate) !=curdate();
このクエリを実行すると、現在の日付のレコードを無視した結果が表示されます。
出力結果
+-------+---------------------+
| Name | DueDate |
+-------+---------------------+
| Chris | 2019-06-24 00:00:00 |
| Chris | 2018-01-01 00:00:00 |
| Carol | 2019-08-03 00:00:00 |
+-------+---------------------+
3 rows in set (0.00 sec)
このように、date(DueDate) != curdate()という条件を使うことで、datetime型のカラムから日付部分だけを抽出して現在の日付と比較し、該当するレコードを除外できます。現在日時そのものではなく日付単位で比較するため、時刻が異なるレコードも正しく除外されるのがポイントです。
-
MySQLでテーブル列の全日付レコードに1年を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、日付や日時の値に指定した期間を簡単に加算できます。この記事では、テーブル内のすべての日付レコードに1年を追加する方法を、具体的な手順とともに解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは、入社日を格納する JoiningDate カラムを持つテーブルを定義します。 mysql> create table DemoTable -> ( -> JoiningDate datetime -> ); Query OK, 0 rows affected (0.59
-
MySQLで現在の日付(CURDATE())に一致する特定の日付のレコードを更新する方法
MySQLでは、CURDATE()関数を使うことで、現在の日付に一致するレコードだけを抽出し、UPDATE文で効率的に値を変更できます。本記事では、実際のサンプルを通じてその手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは「金額(Amount)」と「期日(DueDate)」を持つシンプルなテーブルを用意しました。 mysql> create table DemoTable1822 ( Amount int, Du