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

MySQL: ตรวจสอบว่า Timestamp ถูกตั้งค่าหรือไม่ (Greater Than 0)

การตรวจสอบ Timestamp ที่ตั้งค่าแล้ว

ใน MySQL TIMESTAMP ที่ไม่ได้ตั้งค่า (Zero timestamp) จะเป็น '0000-00-00 00:00:00' ใช้ WHERE timestamp_col > 0 กรองเฉพาะที่ตั้งค่าแล้ว

ตัวอย่าง

mysql> create table DemoTable855(DueDate timestamp);
Query OK, 0 rows affected (0.54 sec)
mysql> insert into DemoTable855 values('2019-08-07');
mysql> insert into DemoTable855 values('0000-00-00');
mysql> insert into DemoTable855 values('2019-07-06');
mysql> insert into DemoTable855 values('2016-04-10');

คำสั่งตรวจสอบ

mysql> select * from DemoTable855 where DueDate > 0;

ผลลัพธ์ (ตัดแถว 0000-00-00 ออก):

+----------------------+
| DueDate              |
+----------------------+
| 2019-08-07 00:00:00  |
| 2019-07-06 00:00:00  |
| 2016-04-10 00:00:00  |
+----------------------+

วิธีอื่นๆ

-- ใช้ IS NOT NULL (ถ้าอนุญาต NULL)
WHERE DueDate IS NOT NULL

-- ใช้ != '0000-00-00'
WHERE DueDate != '0000-00-00'

-- ใช้ YEAR() > 0
WHERE YEAR(DueDate) > 0

⚠️ ข้อควรระวัง: SQL Mode

  • ถ้าเปิด NO_ZERO_DATE จะไม่สามารถ INSERT '0000-00-00' ได้ (Error)
  • MySQL 5.7+ Default เปิด NO_ZERO_DATE แล้ว
  • แนะนำให้ใช้ NULL แทน Zero timestamp สำหรับ "ไม่มีค่า"

สรุป

ใช้ WHERE timestamp_col > 0 หรือ WHERE timestamp_col != '0000-00-00' กรอง Timestamp ที่ตั้งค่าแล้ว แนะนำให้ใช้ NULL แทน Zero date