Trong phần này, chúng ta sẽ tìm hiểu về cách có thể so sánh ngày tháng trong SQL.
- Chúng tôi có thể so sánh bất kỳ ngày ngẫu nhiên nào với một ngày khác được lưu trữ trong một cột của bảng.
- So sánh này có thể được thực hiện với sự trợ giúp của toán tử so sánh chẳng hạn >, <,> =,> =, =.
- Ngày () hàm cũng được sử dụng trong SQL để so sánh hai ngày khác nhau.
- Kiểu dữ liệu DATE cho phép lưu trữ ngày tháng trong bảng SQL ở định dạng ‘ YYYY-MM-DD’. Tuy nhiên, trong khi viết truy vấn để so sánh ngày tháng, ngày tháng được viết trong truy vấn có thể ở định dạng chuỗi thoải mái.
- Theo định dạng chuỗi thư giãn, các phần khác nhau của ngày có thể được phân tách bằng bất kỳ ký tự nào ở giữa. MySQL cũng cho phép ngày tháng được viết trong một truy vấn mà không có bất kỳ dấu phân tách nào, miễn là chuỗi được viết dưới dạng ngày tháng là một ngày hợp lý.
Ví dụ 1:
Viết truy vấn để tìm tất cả các nhân viên có ngày gia nhập lớn hơn hoặc bằng với ngày 5 tháng 5 năm 1999.
Tạo cơ sở dữ liệu với tên “ dbeaffee ”Với một bảng‘ nhân viên ’được tạo trong đó. Chúng tôi sẽ xem xét bảng này và cơ sở dữ liệu cho tất cả các ví dụ sau.
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)
Chúng tôi đã tạo một cơ sở dữ liệu mới với tên ‘dbeprisee’ và với lệnh ‘USE dbeprisee’, chúng tôi đã chọn cơ sở dữ liệu này. Sau đó, với lệnh ‘CREATE TABLE’, chúng tôi đã tạo một bảng ‘nhân viên’ trong cơ sở dữ liệu ‘dbeustingee’.
Bây giờ, chúng ta sẽ chèn dữ liệu vào bảng đã tạo ở trên.
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)
Sau khi chèn thành công dữ liệu vào bảng, bây giờ chúng ta sẽ tìm nạp tất cả các bản ghi của bảng.
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)
Bây giờ, hãy viết một truy vấn cho câu lệnh vấn đề đã cho.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';
Đầu ra:
+--------+------------------+------------+------------+------------------+
| 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)
Có ba nhân viên với id nhân viên 1, 2 và 3 có ngày gia nhập lớn hơn ngày 5 tháng 5 năm 1999.
Ví dụ 2:
Viết truy vấn để tìm tất cả các nhân viên có ngày gia nhập ít hơn hoặc bằng với ngày 5 tháng 5 năm 1999.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';
Đầu ra:
+--------+-------------------+------------+------------+------------------+
| 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)
Hai nhân viên có mã nhân viên 4 và 5 có ngày gia nhập ít hơn ngày 5 tháng 5 năm 1999.
Ví dụ 3:
Viết truy vấn để tìm tất cả các nhân viên có ngày gia nhập trùng với ngày 8 tháng 8 năm 1987.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;
Đầu ra:
+--------+-------------+----------+------------+------------------+
| 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)
Chỉ có một nhân viên với id nhân viên 4 có ngày gia nhập là 18 tháng 8 năm 1987.
Ngày sử dụng ()
Ví dụ 4:
Viết truy vấn bằng cách sử dụng hàm date () để tìm tất cả nhân viên có ngày gia nhập trùng với ngày 26 tháng 6 năm 2021.
mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';
Đầu ra:
+--------+------------------+----------+------------+------------------+
| 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)
Chỉ có một nhân viên có id nhân viên 2 có ngày gia nhập là ngày 26 tháng 6 năm 2021.