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

MySQLで現在日付の12日前に結果が発表された学生レコードを取得する方法

この処理を実現するには、現在の日付と学生の結果発表日を比較し、その差を求める必要があります。これには、DATEDIFF()関数とAND演算子を組み合わせて使用します。

サンプルテーブルの作成

まず、以下のようにテーブルを作成します。

mysql> create table DemoTable1547
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(20),
   -> StudentMarks int,
   -> StudentResultDeclareDate datetime
   -> );
Query OK, 0 rows affected (0.55 sec)

レコードの挿入

次に、insertコマンドを使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable1547(StudentName,StudentMarks,StudentResultDeclareDate) values('Chris',56,'2019-10-13 13:00:00')
   -> ;
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1547(StudentName,StudentMarks,StudentResultDeclareDate) values('Bob',60,'2019-10-13 12:00:00');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1547(StudentName,StudentMarks,StudentResultDeclareDate) values('Mike',45,'2019-10-13 14:00:00');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1547(StudentName,StudentMarks,StudentResultDeclareDate) values('Carol',78,'2019-10-01 14:00:00');
Query OK, 1 row affected (0.11 sec)

テーブルの内容を確認する

select文を使って、テーブル内のすべてのレコードを表示します。

mysql> select * from DemoTable1547;

これにより、以下のような出力が得られます。

+-----------+-------------+--------------+--------------------------+
| StudentId | StudentName | StudentMarks | StudentResultDeclareDate |
+-----------+-------------+--------------+--------------------------+
|         1 | Chris       |           56 | 2019-10-13 13:00:00      |
|         2 | Bob         |           60 | 2019-10-13 12:00:00      |
|         3 | Mike        |           45 | 2019-10-13 14:00:00      |
|         4 | Carol       |           78 | 2019-10-01 14:00:00      |
+-----------+-------------+--------------+--------------------------+
4 rows in set (0.00 sec)

現在の日付を確認する

現在の日付は以下のとおりです。

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2019-10-13 |
+------------+
1 row in set (0.00 sec)

目的のレコードを取得するクエリ

以下は、現在の日付から12日以上前に結果が発表された学生レコードを取得するクエリです。さらにAND演算子を使って、点数が50より大きい学生のみを絞り込んでいます。

mysql> select * from DemoTable1547 where datediff(curdate(),StudentResultDeclareDate) >=12 and StudentMarks > 50;

これにより、以下のような出力が得られます。

+-----------+-------------+--------------+--------------------------+
| StudentId | StudentName | StudentMarks | StudentResultDeclareDate |
+-----------+-------------+--------------+--------------------------+
|         4 | Carol       |           78 | 2019-10-01 14:00:00      |
+-----------+-------------+--------------+--------------------------+
1 row in set (0.00 sec)

この結果から、Carolのレコードだけが条件に該当していることがわかります。Carolの結果発表日は2019-10-01で、現在日付(2019-10-13)との差が12日であり、かつ点数が78と50より大きいためです。他の学生は結果発表日が現在日付と同じ日(差が0日)のため、条件を満たしていません。

なお、DATEDIFF()関数は第1引数から第2引数を引いた日数の差を返すため、引数の順序に注意してください。今回のようにdatediff(curdate(), カラム名)とすることで、結果発表日から現在までの経過日数を正しく取得できます。

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

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

  2. MySQLで現在の日付に11日を追加する方法【DATE_ADD関数の使い方】

    はじめにMySQLでは、DATE_ADD()関数を使うことで、日付に指定した日数を簡単に加算できます。本記事では、現在の日付(CURDATE())に11日を追加する方法を、テーブル作成からクエリ実行まで具体的な例を交えて解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)テストデータの挿入続いて、INSERTコマンドを使用してテーブルに複数のレコードを挿入します。mysql&g