เมื่อต้องการลบเวลาจากคอลัมน์วันที่-เวลา (DATETIME) ใน MySQL สามารถใช้ฟังก์ชัน DATE_SUB() ร่วมกับ INTERVAL ได้ ฟังก์ชันนี้ช่วยคำนวณวันที่/เวลาย้อนหลังได้อย่างแม่นยำ
ตัวอย่างการใช้งาน
สร้างตารางเก็บวันที่-เวลา:
mysql> CREATE TABLE DemoTable1434 (
-> ArrivalDatetime DATETIME
-> );
เพิ่มข้อมูลตัวอย่าง:
mysql> INSERT INTO DemoTable1434 VALUES ('2019-09-30 21:10:00');
mysql> INSERT INTO DemoTable1434 VALUES ('2018-09-30 22:20:40');
mysql> INSERT INTO DemoTable1434 VALUES ('2017-09-30 23:10:00');
ดูข้อมูลก่อนอัปเดต:
mysql> SELECT * FROM DemoTable1434; +---------------------+ | ArrivalDatetime | +---------------------+ | 2019-09-30 21:10:00 | | 2018-09-30 22:20:40 | | 2017-09-30 23:10:00 | +---------------------+
อัปเดตข้อมูลโดยลบ 1 ชั่วโมงจากเวลาปัจจุบัน (NOW()):
mysql> UPDATE DemoTable1434
-> SET ArrivalDatetime = DATE_SUB(NOW(), INTERVAL 1 HOUR);
สมมติเวลาปัจจุบันคือ 2019-09-30 21:16:48 ผลลัพธ์จะเป็น:
mysql> SELECT * FROM DemoTable1434; +---------------------+ | ArrivalDatetime | +---------------------+ | 2019-09-30 20:16:39 | | 2019-09-30 20:16:39 | | 2019-09-30 20:16:39 | +---------------------+
รูปแบบ INTERVAL ที่ใช้บ่อย
| หน่วย | ตัวอย่าง |
|---|---|
| SECOND | INTERVAL 30 SECOND |
| MINUTE | INTERVAL 15 MINUTE |
| HOUR | INTERVAL 1 HOUR |
| DAY | INTERVAL 7 DAY |
| MONTH | INTERVAL 3 MONTH |
| YEAR | INTERVAL 1 YEAR |
คำแนะนำเพิ่มเติม
- ใช้ DATE_ADD() สำหรับการบวกเวลาแทนการลบ
- สามารถรวมหน่วยได้ เช่น
INTERVAL 1 DAY 2 HOUR - หากต้องการลบจากคอลัมน์เดิม ใช้
DATE_SUB(ArrivalDatetime, INTERVAL 1 HOUR)แทน NOW() - ฟังก์ชันนี้ทำงานกับชนิดข้อมูล DATE, DATETIME, และ TIMESTAMP
หมายเหตุ: ตัวอย่างนี้อัปเดตทุกแถวให้เป็นค่าเดียวกัน (เวลาปัจจุบันลบ 1 ชม.) หากต้องการลบ 1 ชม. จากค่าเดิมของแต่ละแถว ให้เปลี่ยน NOW() เป็นชื่อคอลัมน์