Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để truy vấn giữa hai ngày trong MySQL?

Bạn có thể truy vấn giữa các ngày với sự trợ giúp của câu lệnh BETWEEN. Cú pháp như sau -

select *from yourTableName where yourColumnName between ‘yourStartingDate’ and curdate().

Sử dụng curdate () hoặc now (), cả hai hàm này sẽ hoạt động. Để hiểu cú pháp trên, chúng ta hãy tạo một bảng -

mysql> create table BetweenDateDemo
   −> (
   −> StartDate datetime
   −> );
Query OK, 0 rows affected (0.78 sec)

Chèn một số bản ghi vào bảng với sự trợ giúp của truy vấn sau -

mysql> insert into BetweenDateDemo values(date_add(now(),interval -1 year));
Query OK, 1 row affected (0.11 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval -2 year));
Query OK, 1 row affected (0.13 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval -3 year));
Query OK, 1 row affected (0.13 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval 1 year));
Query OK, 1 row affected (0.12 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval 2 year));
Query OK, 1 row affected (0.12 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval 3 year));
Query OK, 1 row affected (0.16 sec)

Bây giờ bạn có thể hiển thị tất cả các bản ghi từ bảng với sự trợ giúp của câu lệnh select. Truy vấn như sau -

mysql> select *from BetweenDateDemo;

Sau đây là kết quả -

+---------------------+
| StartDate           |
+---------------------+
| 2017-12-08 11:45:47 |
| 2016-12-08 11:45:56 |
| 2015-12-08 11:46:01 |
| 2019-12-08 11:46:05 |
| 2020-12-08 11:46:11 |
| 2021-12-08 11:46:15 |
+---------------------+
6 rows in set (0.00 sec)

Bây giờ, hãy thực hiện chọn giữa các ngày bằng cú pháp được thảo luận ở trên -

mysql> select *from BetweenDateDemo where StartDate between '2014-8-12' and curdate();

Sau đây là kết quả -

+---------------------+
| StartDate           |
+---------------------+
| 2017-12-08 11:45:47 |
| 2016-12-08 11:45:56 |
| 2015-12-08 11:46:01 |
+---------------------+
3 rows in set (0.00 sec)

Sử dụng ORDER BY để sắp xếp thứ tự. Truy vấn như sau -

mysql> select *from BetweenDateDemo where StartDate between '2014-8-12' and curdate() order by StartDate;

Sau đây là kết quả -

+---------------------+
| StartDate           |
+---------------------+
| 2015-12-08 11:46:01 |
| 2016-12-08 11:45:56 |
| 2017-12-08 11:45:47 |
+---------------------+
3 rows in set (0.00 sec)