การกรองวันที่/เวลาที่อยู่ในอดีตด้วย NOW()
เพื่อแสดงเฉพาะบันทึกที่มีค่า Timestamp (datetime) อยู่ก่อนเวลาปัจจุบัน เราใช้ตัวดำเนินการเปรียบเทียบ < กับฟังก์ชัน NOW()
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (ArrivalDate TIMESTAMP);
Query OK, 0 rows affected (1.96 sec)
mysql> INSERT INTO DemoTable VALUES('2019-09-14 17:25:00');
mysql> INSERT INTO DemoTable VALUES('2019-09-13 17:25:00');
mysql> INSERT INTO DemoTable VALUES('2016-09-01 17:20:10');
mysql> INSERT INTO DemoTable VALUES('2019-09-11 12:00:00');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+---------------------+
| ArrivalDate |
+---------------------+
| 2019-09-14 17:25:00 |
| 2019-09-13 17:25:00 |
| 2016-09-01 17:20:10 |
| 2019-09-11 12:00:00 |
+---------------------+
4 rows in set (0.04 sec)
คำสั่งแสดงเฉพาะ Timestamp ก่อนเวลาปัจจุบัน
mysql> SELECT * FROM DemoTable WHERE ArrivalDate < NOW();
ผลลัพธ์ (สมมติ NOW() คือ 2019-09-14 18:00:00):
+---------------------+
| ArrivalDate |
+---------------------+
| 2019-09-13 17:25:00 |
| 2016-09-01 17:20:10 |
| 2019-09-11 12:00:00 |
+---------------------+
3 rows in set (0.07 sec)
คำอธิบาย
NOW(): คืนค่าวันที่และเวลาปัจจุบันของเซิร์ฟเวอร์ArrivalDate < NOW(): เปรียบเทียบ Timestamp โดยตรง- แถวที่มี ArrivalDate = '2019-09-14 17:25:00' ไม่ถูกเลือก เพราะยังไม่ถึง NOW() (ในตัวอย่าง)
- ใช้
CURDATE()แทนหากต้องการเปรียบเทียบเฉพาะวันที่ (ไม่รวมเวลา)