ฟังก์ชัน DATE_SUB()
ใช้ลบช่วงเวลา (Interval) ออกจากวันที่/เวลา รองรับหน่วยต่างๆ: DAY, MONTH, YEAR, HOUR, MINUTE, SECOND เป็นต้น
รูปแบบคำสั่ง
DATE_SUB(date, INTERVAL expr unit)
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> CREATE TABLE DemoTable (
-> AdmissionDate TIMESTAMP
-> );
Query OK, 0 rows affected (1.05 sec)
2. เพิ่มข้อมูลวันที่
mysql> INSERT INTO DemoTable VALUES('2019-01-01');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('2018-12-31');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('2017-03-13');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('2019-01-02');
Query OK, 1 row affected (0.08 sec)
3. แสดงข้อมูลต้นฉบับ
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+---------------------+ | AdmissionDate | +---------------------+ | 2019-01-01 00:00:00 | | 2018-12-31 00:00:00 | | 2017-03-13 00:00:00 | | 2019-01-02 00:00:00 | +---------------------+ 4 rows in set (0.00 sec)
4. ลบ 1 วันจากทุกแถว
mysql> SELECT DATE_SUB(AdmissionDate, INTERVAL 1 DAY) FROM DemoTable;
ผลลัพธ์:
+----------------------------------------+ | date_sub(AdmissionDate,interval 1 day) | +----------------------------------------+ | 2018-12-31 00:00:00 | | 2018-12-30 00:00:00 | | 2017-03-12 00:00:00 | | 2019-01-01 00:00:00 | +----------------------------------------+ 4 rows in set (0.00 sec)
หน่วยเวลาที่รองรับ (Unit)
| หน่วย | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| MICROSECOND | ไมโครวินาที | INTERVAL 500 MICROSECOND |
| SECOND | วินาที | INTERVAL 30 SECOND |
| MINUTE | นาที | INTERVAL 15 MINUTE |
| HOUR | ชั่วโมง | INTERVAL 2 HOUR |
| DAY | วัน | INTERVAL 1 DAY |
| WEEK | สัปดาห์ | INTERVAL 1 WEEK |
| MONTH | เดือน | INTERVAL 3 MONTH |
| QUARTER | ไตรมาส | INTERVAL 1 QUARTER |
| YEAR | ปี | INTERVAL 1 YEAR |
ฟังก์ชันเกี่ยวข้อง
DATE_ADD()- บวกช่วงเวลา (ตรงข้ามกับ DATE_SUB)ADDDATE()/SUBDATE()- Synonym ของ DATE_ADD/DATE_SUBINTERVALkeyword ใช้ได้ใน WHERE clause เช่นWHERE date > NOW() - INTERVAL 7 DAY
กรณีการใช้งานจริง
- คำนวณวันครบกำหนดชำระ (Due date - 7 days = Reminder date)
- หาช่วงเวลา 30 วันที่ผ่านมา สำหรับรายงาน
- คำนวณอายุ/ระยะเวลาจากวันเกิด/วันเริ่มงาน
- Schedule job - ตรวจสอบข้อมูลที่หมดอายุ