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

การลบเวลา 1 ชั่วโมงจากข้อมูลวันที่-เวลาใน MySQL ด้วย DATE_SUB

เมื่อต้องการลบเวลาจากคอลัมน์วันที่-เวลา (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 ที่ใช้บ่อย

หน่วยตัวอย่าง
SECONDINTERVAL 30 SECOND
MINUTEINTERVAL 15 MINUTE
HOURINTERVAL 1 HOUR
DAYINTERVAL 7 DAY
MONTHINTERVAL 3 MONTH
YEARINTERVAL 1 YEAR

คำแนะนำเพิ่มเติม

  • ใช้ DATE_ADD() สำหรับการบวกเวลาแทนการลบ
  • สามารถรวมหน่วยได้ เช่น INTERVAL 1 DAY 2 HOUR
  • หากต้องการลบจากคอลัมน์เดิม ใช้ DATE_SUB(ArrivalDatetime, INTERVAL 1 HOUR) แทน NOW()
  • ฟังก์ชันนี้ทำงานกับชนิดข้อมูล DATE, DATETIME, และ TIMESTAMP

หมายเหตุ: ตัวอย่างนี้อัปเดตทุกแถวให้เป็นค่าเดียวกัน (เวลาปัจจุบันลบ 1 ชม.) หากต้องการลบ 1 ชม. จากค่าเดิมของแต่ละแถว ให้เปลี่ยน NOW() เป็นชื่อคอลัมน์