วันที่ปัจจุบัน
mysql> SELECT CURDATE();
+------------+
| curdate() |
+------------+
| 2019-12-10 |
+------------+
การเตรียมข้อมูล
mysql> CREATE TABLE DemoTable1890 (DueDate TIMESTAMP);
mysql> INSERT INTO DemoTable1890 VALUES
('2017-12-10'), ('2021-12-10'), ('2018-04-24'), ('2020-05-11');
ตั้งค่า Boolean: เก่ากว่า 2 ปี = true
mysql> SELECT IF(DueDate > CURDATE() - INTERVAL 2 YEAR, FALSE, TRUE) AS Status
FROM DemoTable1890;
ผลลัพธ์ (1=True=เก่ากว่า 2 ปี, 0=False=ใหม่กว่า 2 ปี):
+--------+
| Status |
+--------+
| 1 | -- 2017-12-10 เก่า > 2 ปี
| 0 | -- 2021-12-10 ใหม่ < 2 ปี
| 0 | -- 2018-04-24 ใหม่ < 2 ปี (จาก 2019-12-10)
| 0 | -- 2020-05-11 ใหม่ < 2 ปี
+--------+
IF() Function
IF(condition, true_value, false_value)
-- คืนค่า true_value ถ้า condition จริง, ไม่งั้น false_value
Boolean ใน MySQL
TRUE= 1,FALSE= 0IS TRUE,IS FALSE,IS NOT TRUE,IS NOT FALSE- Non-zero = True, Zero = False ใน Context ที่ต้องการ Boolean
CASE WHEN Alternative (อ่านง่ายกว่า)
SELECT CASE
WHEN DueDate > CURDATE() - INTERVAL 2 YEAR THEN 'Recent'
ELSE 'Old'
END AS Status
FROM DemoTable1890;
Index Performance
-- Good: SARGable
WHERE DueDate > DATE_SUB(CURDATE(), INTERVAL 2 YEAR)
-- Bad: Function on Column
WHERE DATEDIFF(CURDATE(), DueDate) > 730
กรณีใช้งานจริง
- Flag ข้อมูลเก่า (Archived/Active)
- Subscription Expired Check
- Data Retention Policy
- Reporting: Segment ตามอายุข้อมูล