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

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型のカラムから日付部分だけを抽出して現在の日付と比較し、該当するレコードを除外できます。現在日時そのものではなく日付単位で比較するため、時刻が異なるレコードも正しく除外されるのがポイントです。

  1. MySQLでテーブル列の全日付レコードに1年を追加する方法

    MySQLでは、DATE_ADD()関数を使うことで、日付や日時の値に指定した期間を簡単に加算できます。この記事では、テーブル内のすべての日付レコードに1年を追加する方法を、具体的な手順とともに解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは、入社日を格納する JoiningDate カラムを持つテーブルを定義します。 mysql> create table DemoTable -> ( -> JoiningDate datetime -> ); Query OK, 0 rows affected (0.59

  2. MySQLで現在の日付(CURDATE())に一致する特定の日付のレコードを更新する方法

    MySQLでは、CURDATE()関数を使うことで、現在の日付に一致するレコードだけを抽出し、UPDATE文で効率的に値を変更できます。本記事では、実際のサンプルを通じてその手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは「金額(Amount)」と「期日(DueDate)」を持つシンプルなテーブルを用意しました。 mysql> create table DemoTable1822      (      Amount int,      Du