In deze sectie leren we hoe datums kunnen worden vergeleken in SQL.
- We kunnen elke willekeurige datum vergelijken met een andere datum die is opgeslagen in een kolom van een tabel.
- Deze vergelijking kan worden gemaakt met behulp van vergelijkingsoperatoren zoals >, <,>=,>=, =.
- De datum () functie wordt ook gebruikt in SQL om twee verschillende datums te vergelijken.
- Met het gegevenstype DATE kunnen de datums in SQL-tabellen worden opgeslagen in de indeling 'JJJJ-MM-DD'. Maar tijdens het schrijven van de query om de datums te vergelijken, kan de datum die in de query moet worden geschreven in een ontspannen tekenreeksformaat zijn.
- Volgens het ontspannen tekenreeksformaat kunnen verschillende delen van de datum worden gescheiden met elk teken ertussen. MySQL maakt het ook mogelijk om een datum in een zoekopdracht te schrijven zonder scheidingsteken, op voorwaarde dat de string die als datum is geschreven een redelijke datum vormt.
Voorbeeld 1:
Schrijf een zoekopdracht om alle werknemers te vinden van wie de indiensttredingsdatum hoger is dan of gelijk is aan 5 mei 1999.
Maak een database aan met de naam “dbemployee ” met een tabel ‘medewerker’ erin gemaakt. We zullen deze tabel en database in overweging nemen voor alle volgende voorbeelden.
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)
We hebben een nieuwe database gemaakt met de naam 'dbemployee' en met het commando 'USE dbemployee' hebben we deze database geselecteerd. Vervolgens hebben we met het commando 'CREATE TABLE' een tabel 'employee' gemaakt in de database 'dbemployee'.
Nu zullen we gegevens invoegen in de hierboven gemaakte tabel.
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)
Na het succesvol invoegen van gegevens in de tabel, zullen we nu alle records van een tabel ophalen.
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)
Laten we nu een query schrijven voor de gegeven probleemstelling.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';
Uitvoer:
+--------+------------------+------------+------------+------------------+
| 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)
Er zijn drie werknemers met personeelsnummer 1, 2 en 3 waarvan de indiensttredingsdatum hoger is dan 5 mei 1999.
Voorbeeld 2:
Schrijf een zoekopdracht om alle werknemers te vinden van wie de datum van indiensttreding lager is dan of gelijk is aan 5 mei 1999.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';
Uitvoer:
+--------+-------------------+------------+------------+------------------+
| 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)
Twee werknemers met personeelsnummer 4 en 5 van wie de indiensttreding minder dan 5 mei 1999 is.
Voorbeeld 3:
Schrijf een zoekopdracht om alle werknemers te vinden van wie de indiensttredingsdatum dezelfde is als 8 augustus 1987.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;
Uitvoer:
+--------+-------------+----------+------------+------------------+
| 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)
Er is slechts één werknemer met werknemer-ID 4 wiens indiensttredingsdatum gelijk is aan 18 augustus 1987.
Datum() gebruiken
Voorbeeld 4:
Schrijf een zoekopdracht met de functie datum () om alle werknemers te vinden van wie de indiensttredingsdatum dezelfde is als 26 juni 2021.
mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';
Uitvoer:
+--------+------------------+----------+------------+------------------+
| 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)
Er is slechts één werknemer met werknemer-ID 2 wiens indiensttredingsdatum gelijk is aan 26 juni 2021.