このセクションでは、SQLで日付を比較する方法について学習します。
- 任意のランダムな日付を、テーブルの列に格納されている別の日付と比較できます。
- この比較は、比較演算子を使用して行うことができます。 そのような>、<、> =、> =、=。
- 日付() 関数はSQLでも使用され、2つの異なる日付を比較します。
- データ型DATEを使用すると、SQLテーブルに「YYYY-MM-DD」形式で日付を格納できます。 ただし、日付を比較するためにクエリを記述している間、クエリに書き込まれる日付はリラックスした文字列形式にすることができます。
- リラックスした文字列形式によると、日付のさまざまな部分は、間に任意の文字を使用して区切ることができます。 MySQLでは、日付として記述された文字列が適切な日付を形成する場合、区切り文字なしでクエリに日付を書き込むこともできます。
例1:
クエリを作成して、入社日が1999年5月5日以降のすべての従業員を検索します。
「dbemployee」という名前のデータベースを作成します 」にテーブル「employee」が作成されています。以下のすべての例について、このテーブルとデータベースを検討します。
mysql> CREATE DATABASE dbemployee;
Query OK, 1 row affected (0.00 sec)
mysql> USE dbemployee;
Database changed
mysql> CREATE TABLE employee (Emp_Id INT NOT NULL, Emp_Name VARCHAR (20), Emp_Dept VARCHAR (20), Emp_Salary INT, Emp_Joining_Date DATE);
Query OK, 0 rows affected (0.09 sec)
「dbemployee」という名前の新しいデータベースを作成し、「USEdbemployee」コマンドを使用してこのデータベースを選択しました。次に、「CREATE TABLE」コマンドを使用して、データベース「dbemployee」にテーブル「employee」を作成しました。
次に、上記で作成したテーブルにデータを挿入します。
mysql> INSERT INTO employee VALUES (1, "Sana Khan", "HRM", 45000, "1999-06-17");
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO employee VALUES (2, "Anupama Deshmukh", "Finance", 32000, CURDATE ());
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO employee VALUES (3, "Kajal Shah", "Purchasing", 71000, "2020-12-12");
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO employee VALUES (4, "Mayuri Koli", "Accounts", 64000, "1987-08-18");
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO employee VALUES (5, "Surili Maheshwari", "Production", 30000, "1970-10-10");
Query OK, 1 row affected (0.09 sec)
テーブルにデータを正常に挿入したら、テーブルのすべてのレコードをフェッチします。
mysql> SELECT *FROM employee;
+--------+-------------------+------------+------------+------------------+
| Emp_Id | Emp_Name | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+-------------------+------------+------------+------------------+
| 1 | Sana Khan | HRM | 45000 | 1999-06-17 |
| 2 | Anupama Deshmukh | Finance | 32000 | 2021-06-26 |
| 3 | Kajal Shah | Purchasing | 71000 | 2020-12-12 |
| 4 | Mayuri Koli | Accounts | 64000 | 1987-08-18 |
| 5 | Surili Maheshwari | Production | 30000 | 1970-10-10 |
+--------+-------------------+------------+------------+------------------+
5 rows in set (0.00 sec)
それでは、特定の問題ステートメントのクエリを作成しましょう。
mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';
出力:
+--------+------------------+------------+------------+------------------+
| Emp_Id | Emp_Name | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+------------------+------------+------------+------------------+
| 1 | Sana Khan | HRM | 45000 | 1999-06-17 |
| 2 | Anupama Deshmukh | Finance | 32000 | 2021-06-26 |
| 3 | Kajal Shah | Purchasing | 71000 | 2020-12-12 |
+--------+------------------+------------+------------+------------------+
3 rows in set (0.00 sec)
従業員IDが1、2、3で、入社日が1999年5月5日を超える3人の従業員がいます。
例2:
クエリを作成して、入社日が1999年5月5日以下のすべての従業員を検索します。
mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';
出力:
+--------+-------------------+------------+------------+------------------+
| Emp_Id | Emp_Name | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+-------------------+------------+------------+------------------+
| 4 | Mayuri Koli | Accounts | 64000 | 1987-08-18 |
| 5 | Surili Maheshwari | Production | 30000 | 1970-10-10 |
+--------+-------------------+------------+------------+------------------+
2 rows in set (0.00 sec)
入社日が1999年5月5日未満の従業員ID4および5の2人の従業員。
例3:
クエリを作成して、入社日が1987年8月8日と同じであるすべての従業員を検索します。
mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;
出力:
+--------+-------------+----------+------------+------------------+
| Emp_Id | Emp_Name | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+-------------+----------+------------+------------------+
| 4 | Mayuri Koli | Accounts | 64000 | 1987-08-18 |
+--------+-------------+----------+------------+------------------+
1 row in set (0.00 sec)
参加日が1987年8月18日と等しい従業員ID4の従業員は1人だけです。
date()の使用
例4:
date()関数を使用してクエリを記述し、参加日が2021年6月26日と同じであるすべての従業員を検索します。
mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';
出力:
+--------+------------------+----------+------------+------------------+
| Emp_Id | Emp_Name | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+------------------+----------+------------+------------------+
| 2 | Anupama Deshmukh | Finance | 32000 | 2021-06-26 |
+--------+------------------+----------+------------+------------------+
1 row in set (0.00 sec)
入社日が2021年6月26日と等しい従業員ID2の従業員は1人だけです。