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