Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ตรวจสอบว่าวันที่ผ่านไปแล้วหรือยังใน MySQL เปรียบเทียบกับ CURDATE()

เพื่อตรวจสอบว่าวันที่ในคอลัมน์ (Deadline, Expiry Date, v.v.) ผ่านไปแล้วหรือยัง ให้เปรียบเทียบกับฟังก์ชัน CURDATE() ซึ่งคืนค่าวันที่ปัจจุบันของ Server

ตัวอย่างการใช้งาน

สร้างตารางเก็บ Deadline:

mysql> create table DemoTable1340 (Deadline date);
mysql> insert into DemoTable1340 values('2019-09-18'),('2019-09-23'),('2018-12-24'),('2016-11-01'),('2019-09-28');

ข้อมูลทั้งหมด:

+------------+
| Deadline   |
+------------+
| 2019-09-18 |
| 2019-09-23 |
| 2018-12-24 |
| 2016-11-01 |
| 2019-09-28 |
+------------+

ตรวจสอบวันที่ปัจจุบัน:

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2019-09-21 |
+------------+

คำสั่งดึงเฉพาะ Deadline ที่ยังไม่ถึง (>= วันนี้)

mysql> select * from DemoTable1340 where Deadline >= curdate();

ผลลัพธ์ (Deadline 23 และ 28 กันยายน ยังไม่ถึง)

+------------+
| Deadline   |
+------------+
| 2019-09-23 |
| 2019-09-28 |
+------------+

กรณีการใช้งานอื่นๆ:

  • Deadline ที่ผ่านไปแล้ว: WHERE Deadline < CURDATE()
  • Deadline วันนี้: WHERE Deadline = CURDATE()
  • รวมเวลา (DATETIME): ใช้ NOW() แทน CURDATE()
  • เพิ่มช่วงเวลา: WHERE Deadline >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) (Deadline 7 วันที่แล้วถึงปัจจุบัน)