W tej sekcji dowiemy się, jak można porównywać daty w SQL.
- Możemy porównać dowolną losową datę z inną datą zapisaną w kolumnie tabeli.
- To porównanie można przeprowadzić za pomocą operatorów porównania takie >, <,>=,>=, =.
- data () funkcja jest również używana w SQL do porównywania dwóch różnych dat.
- Typ danych DATE umożliwia przechowywanie dat w tabelach SQL w formacie „RRRR-MM-DD”. Ale podczas pisania zapytania w celu porównania dat data do zapisania w zapytaniu może być w luźnym formacie ciągu.
- Zgodnie ze zrelaksowanym formatem ciągu, różne części daty można oddzielić dowolnym znakiem pomiędzy nimi. MySQL umożliwia również zapisanie daty w zapytaniu bez żadnego separatora, pod warunkiem, że ciąg zapisany jako data tworzy sensowną datę.
Przykład 1:
Napisz zapytanie, aby znaleźć wszystkich pracowników, których data dołączenia jest późniejsza lub taka sama jak 5 maja 1999 r.
Utwórz bazę danych o nazwie „dbemployee ” z utworzoną w nim tabelą „pracownik”. Rozważymy tę tabelę i bazę danych we wszystkich poniższych przykładach.
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)
Stworzyliśmy nową bazę danych o nazwie „dbemployee” i za pomocą polecenia „USE dbemployee” wybraliśmy tę bazę danych. Następnie za pomocą polecenia „CREATE TABLE” stworzyliśmy tabelę „employee” w bazie danych „dbemployee”.
Teraz wstawimy dane do utworzonej powyżej tabeli.
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)
Po pomyślnym wstawieniu danych do tabeli, pobierzemy teraz wszystkie rekordy tabeli.
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)
Teraz napiszmy zapytanie dla podanego opisu problemu.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';
Wyjście:
+--------+------------------+------------+------------+------------------+
| 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)
Jest trzech pracowników o numerach identyfikacyjnych 1, 2 i 3, których data przystąpienia jest późniejsza niż 5 maja 1999 r.
Przykład 2:
Napisz zapytanie, aby znaleźć wszystkich pracowników, których data dołączenia jest krótsza lub taka sama jak 5 maja 1999 r.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';
Wyjście:
+--------+-------------------+------------+------------+------------------+
| 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)
Dwóch pracowników o numerach identyfikacyjnych 4 i 5, których data przystąpienia przypada na mniej niż 5 maja 1999 r.
Przykład 3:
Napisz zapytanie, aby znaleźć wszystkich pracowników, których data dołączenia jest taka sama jak 8 sierpnia 1987 r.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;
Wyjście:
+--------+-------------+----------+------------+------------------+
| 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)
Jest tylko jeden pracownik o identyfikatorze pracownika 4, którego data przystąpienia to 18 sierpnia 1987 r.
Korzystanie z data()
Przykład 4:
Napisz zapytanie za pomocą funkcji daty (), aby znaleźć wszystkich pracowników, których data dołączenia jest taka sama jak 26 czerwca 2021 r.
mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';
Wyjście:
+--------+------------------+----------+------------+------------------+
| 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)
Jest tylko jeden pracownik o identyfikatorze pracownika 2, którego data przystąpienia to 26 czerwca 2021 r.