I det här avsnittet kommer vi att lära oss om hur datum kan jämföras i SQL.
- Vi kan jämföra vilket slumpmässigt datum som helst med ett annat datum lagrat i en kolumn i en tabell.
- Denna jämförelse kan göras med hjälp av jämförelseoperatorer sådana >, <,>=,>=, =.
- datumet () Funktionen används också i SQL för att jämföra två olika datum.
- Datatypen DATE tillåter lagring av datum i SQL-tabeller i formatet "ÅÅÅÅ-MM-DD". Men när du skriver frågan för att jämföra datumen, kan datumet som ska skrivas i frågan vara i ett avslappnat strängformat.
- Enligt det avslappnade strängformatet kan olika delar av datumet separeras med vilket tecken som helst däremellan. MySQL tillåter också att ett datum skrivs i en fråga utan någon separator, förutsatt att strängen som är skriven som ett datum bildar ett vettigt datum.
Exempel 1:
Skriv en fråga för att hitta alla anställda vars anslutningsdatum är längre än eller samma som den 5 maj 1999.
Skapa en databas med namnet "dbemployee ” med en tabell ’anställd’ skapad i den. Vi kommer att överväga den här tabellen och databasen för alla följande exempel.
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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562420.png)
Vi har skapat en ny databas med namnet 'dbemployee', och med kommandot 'USE dbemployee' har vi valt denna databas. Sedan, med kommandot 'CREATE TABLE', har vi skapat en tabell 'employee' i databasen 'dbemployee'.
Nu kommer vi att infoga data i den ovan skapade tabellen.
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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562525.png)
Efter att ha infogat data framgångsrikt i tabellen kommer vi nu att hämta alla poster i en tabell.
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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562505.png)
Låt oss nu skriva en fråga för den givna problemformuleringen.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';
Utdata:
+--------+------------------+------------+------------+------------------+
| 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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562538.png)
Det finns tre anställda med medarbetar-id 1, 2 och 3 vars anslutningsdatum är längre än 5 maj 1999.
Exempel 2:
Skriv en fråga för att hitta alla anställda vars anslutningsdatum är mindre än eller samma som den 5 maj 1999.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';
Utdata:
+--------+-------------------+------------+------------+------------------+
| 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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562657.png)
Två anställda med anställningsnummer 4 och 5 vars anslutningsdatum är mindre än 5 maj 1999.
Exempel 3:
Skriv en fråga för att hitta alla anställda vars anslutningsdatum är samma som 8 augusti 1987.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;
Utdata:
+--------+-------------+----------+------------+------------------+
| 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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562604.png)
Det finns bara en anställd med anställd id 4 vars anslutningsdatum är lika med den 18 augusti 1987.
Använder date()
Exempel 4:
Skriv en fråga med funktionen datum () för att hitta alla anställda vars anslutningsdatum är detsamma som 26 juni 2021.
mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';
Utdata:
+--------+------------------+----------+------------+------------------+
| 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)
![](http://www.sqldat.com/article/uploadfiles/202205/2022051211562695.png)
Det finns bara en anställd med anställd-id 2 vars anslutningsdatum är lika med 26 juni 2021.