Hướng dẫn mysql compare date with current date - mysql so sánh ngày với ngày hiện tại

72

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một cột

DATE(duedate) = CURDATE() 
7 (định dạng ____ 18) chỉ định ngày đáo hạn của một vé, bây giờ tôi cần nhận được vé 'do hôm nay' dựa trên so sánh giữa
DATE(duedate) = CURDATE() 
9 với
DATE(duedate) = CURDATE() 
7. tức là
CURDATE()
1 so với
CURDATE()
2 sẽ trả về đúng trong vấn đề này.

Đã hỏi ngày 26 tháng 1 năm 2013 lúc 4:38Jan 26, 2013 at 4:38

Hướng dẫn mysql compare date with current date - mysql so sánh ngày với ngày hiện tại

0

Sử dụng

CURDATE()
3 để so sánh ngày

CURDATE()
3 sẽ cung cấp cho bạn một phần ngày của ngày hiện tại và
CURDATE()
5 sẽ cung cấp cho bạn một phần ngày của ngày đáo hạn. sau đó bạn có thể dễ dàng so sánh ngày

Vì vậy, bạn có thể so sánh nó như

DATE(NOW()) = DATE(duedate)

HOẶC

DATE(duedate) = CURDATE() 

Xem ở đây

Đã trả lời ngày 26 tháng 1 năm 2013 lúc 4:41Jan 26, 2013 at 4:41

Bhavik Shahbhavik ShahBhavik Shah

5.0452 Huy hiệu vàng23 Huy hiệu bạc40 Huy hiệu đồng2 gold badges23 silver badges40 bronze badges

7

Chỉ so sánh ngày thay vì ngày + giờ (bây giờ) với:

CURDATE()

Đã trả lời ngày 21 tháng 9 năm 2015 lúc 13:24Sep 21, 2015 at 13:24

Hướng dẫn mysql compare date with current date - mysql so sánh ngày với ngày hiện tại

Cae Vecchicae VecchiCae Vecchi

6881 Huy hiệu vàng9 Huy hiệu bạc17 Huy hiệu đồng1 gold badge9 silver badges17 bronze badges

1

MySQL có khả năng so sánh hai ngày khác nhau được viết dưới dạng biểu thức

CURDATE()
6. to compare two different dates written as a
CURDATE()
6 expression.

Khi bạn cần so sánh ngày giữa cột ngày và ngày tùy ý, bạn có thể sử dụng hàm

CURDATE()
7 để trích xuất phần ngày từ cột của bạn và so sánh nó với một chuỗi đại diện cho ngày mong muốn của bạn.

Ví dụ: giả sử bạn có bảng MySQL có tên

CURDATE()
8 với các hàng sau:

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)

Bây giờ bạn muốn truy vấn tất cả các hàng từ bảng

CURDATE()
8 có giá trị
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
0 lớn hơn
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
1.

Đây là cách bạn làm điều đó:

SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;

Đầu ra của truy vấn ở trên sẽ như sau:

+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)

Khi so sánh cột

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
2 hoặc
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
3 với một chuỗi đại diện cho một ngày như trong truy vấn ở trên, MySQL sẽ chuyển cả giá trị cột và biểu thức thành các loại số nguyên dài để so sánh.

Đây là lý do tại sao mặc dù bạn đang so sánh một cột ngày với một chuỗi, bạn không cần phải chuyển đổi các giá trị cột ngày của mình thành một chuỗi theo cách thủ công.

Để kiểm tra kết quả truy vấn của bạn, bạn nên bao gồm câu lệnh

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
4 ở trên.

Bạn có thể ngay lập tức biết nếu truy vấn đáp ứng yêu cầu của bạn bằng cách nhìn vào hàng đầu tiên. Như trong ví dụ trên, giá trị sớm nhất của cột

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
0 phải là
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
6.
if the query satisfies your requirement by looking at the first row. As in the example above, the
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
0 column’s earliest value should be
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
6.

Bạn cũng có thể sử dụng toán tử

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
7 để chọn tất cả các hàng có cột ngày giữa hai biểu thức ngày được chỉ định:

SELECT * FROM users
WHERE DATE(last_update)
  BETWEEN "2021-08-01" AND "2021-08-02"
ORDER BY last_update ASC;

Truy vấn ở trên sẽ tạo ra kết quả sau:

+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)

MySQL chỉ cho phép một định dạng ngày là

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
8, vì vậy bạn cần định dạng bất kỳ biểu thức ngày chuỗi nào bạn có thể có như vậy. one date format which is
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
8, so you need to format any string date expression you may have as such.

Tại sao sử dụng hàm ngày () để so sánh

Hàm MySQL

CURDATE()
7 trích xuất phần ngày từ cột
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
2 hoặc
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
3 của bạn thành một
CURDATE()
6 như hình dưới đây:

mysql> SELECT DATE('2005-08-28 01:02:03');
-> '2005-08-28'

Hàm được sử dụng để MySQL sẽ chỉ xem xét phần ngày của các giá trị cột của bạn để so sánh.

Không sử dụng hàm

CURDATE()
7, thì MySQL cũng sẽ so sánh phần thời gian của cột với biểu thức chuỗi của bạn. Điều này sẽ làm cho bất kỳ loại so sánh nào bao gồm biểu thức chuỗi được chỉ định vào tập kết quả.

Quay trở lại bảng ví dụ ở trên, truy vấn sau:

SELECT * FROM users
WHERE last_update > "2021-08-01"
ORDER BY last_update ASC;

Sẽ tạo ra kết quả sau:

DATE(duedate) = CURDATE() 
0

Như bạn có thể thấy từ đầu ra, mệnh đề so sánh

SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
4 trở thành
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
5 và do đó, MySQL tiến hành tạo ra kết quả được đặt tương ứng.

Nếu bạn có ý định so sánh phần thời gian cho truy vấn của mình, thì bạn cũng cần bao gồm phần thời gian trong biểu thức chuỗi của bạn.

Truy vấn sau từ cùng một bảng:

DATE(duedate) = CURDATE() 
1

Sẽ tạo ra kết quả sau:

+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)

So sánh ngày giữa hai cột ngày

Nếu bạn đã có hai cột ngày, thì bạn có thể ngay lập tức so sánh chúng với

SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
6,
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
7,
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
8,
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
9,
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
0 hoặc
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
7.
, then you can immediately compare them with the
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
6,
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
7,
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
8,
SELECT * FROM users
WHERE DATE(last_update) > "2021-08-01"
ORDER BY last_update ASC;
9,
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
0, or
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
7 operators.

Giả sử bạn có cột

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
0 và
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
3 trong bảng của bạn như được hiển thị bên dưới:

DATE(duedate) = CURDATE() 
3

Để lấy tất cả các hàng có cột

+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
3 muộn hơn cột
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
0, bạn có thể sử dụng truy vấn sau:

DATE(duedate) = CURDATE() 
4

Kết quả sẽ như sau:

DATE(duedate) = CURDATE() 
5

Và đó là cách mà bạn có thể thực hiện so sánh ngày trong MySQL.

Đừng quên rằng bạn cần phải có biểu thức chuỗi ngày được định dạng là

mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
8 hoặc
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
7 nếu bạn cũng muốn so sánh phần thời gian.
you need to have a date string expression formatted as
mysql> SELECT * FROM users;
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     201 | Peter      | Parker    | 2021-08-01 16:15:00 |
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
8 or
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
7 if you want to compare the time portion as well.

Ngoài ra, ở đây, các câu lệnh

+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
8 và
+---------+------------+-----------+---------------------+
| user_id | first_name | last_name | last_update         |
+---------+------------+-----------+---------------------+
|     202 | Thor       | Odinson   | 2021-08-02 12:15:00 |
|     204 | Loki       | Laufeyson | 2021-08-03 10:43:24 |
+---------+------------+-----------+---------------------+
2 rows in set (0.00 sec)
9 nếu bạn cần bảng ví dụ của tôi cho các bài tập:

DATE(duedate) = CURDATE() 
6

Vui lòng sử dụng tất cả các tài nguyên bạn thấy ở đây cho dự án của bạn 😉

Làm cách nào tôi có thể so sánh ngày và ngày hiện tại trong cơ sở dữ liệu MySQL?

MySQL có khả năng so sánh hai ngày khác nhau được viết dưới dạng biểu thức chuỗi. Khi bạn cần so sánh ngày giữa cột ngày và ngày tùy ý, bạn có thể sử dụng hàm ngày () để trích xuất phần ngày từ cột của bạn và so sánh nó với một chuỗi đại diện cho ngày mong muốn của bạn.use the DATE() function to extract the date part from your column and compare it with a string that represents your desired date.

Làm thế nào tôi có thể so sánh hai trường ngày trong MySQL?

Để đếm sự khác biệt giữa ngày trong MySQL, hãy sử dụng hàm Datediff (Enddate, StartDate).Sự khác biệt giữa startdate và enddate được thể hiện trong ngày.use the DATEDIFF(enddate, startdate) function. The difference between startdate and enddate is expressed in days.

Ngày nào lớn hơn ngày hiện tại trong SQL?

Trong bài viết này, chúng tôi sẽ thấy truy vấn SQL để kiểm tra xem ngày có lớn hơn ngày hôm nay bằng cách so sánh ngày hôm nay bằng hàm getDate () không.Hàm này trong SQL Server được sử dụng để trả về ngày và thời gian hiện tại của hệ thống cơ sở dữ liệu trong 'Yyyy-MM-DD HH: MM: SS.mẫu mmm '.GETDATE() function. This function in SQL Server is used to return the present date and time of the database system in a 'YYYY-MM-DD hh:mm: ss. mmm' pattern.

Làm thế nào bạn có được ngày hiện tại trong MySQL?

Hàm mysql curdate () hàm curdate () trả về ngày hiện tại.Lưu ý: Ngày được trả về dưới dạng "yyyy-mm-dd" (chuỗi) hoặc dưới dạng yyyymmdd (số).Lưu ý: Hàm này bằng hàm current_date ().CURDATE() Function The CURDATE() function returns the current date. Note: The date is returned as "YYYY-MM-DD" (string) or as YYYYMMDD (numeric). Note: This function equals the CURRENT_DATE() function.