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

แสดง Timestamp ที่อยู่ก่อนวันที่ปัจจุบันใน MySQL

การกรองวันที่/เวลาที่อยู่ในอดีตด้วย 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() แทนหากต้องการเปรียบเทียบเฉพาะวันที่ (ไม่รวมเวลา)