MySQL การใช้งานฟังก์ชัน SUBTIME()

ฟังก์ชัน SUBTIME() ใช้เพื่อลบเวลาออกจากค่า TIME หรือ DATETIME ที่กำหนด เพื่อหาค่าเวลาก่อนหน้า เช่น ลบ 2 ชั่วโมง, 30 นาที, หรือ 45 วินาที เป็นต้น เหมาะสำหรับการคำนวณเวลาก่อนเริ่มงาน, ก่อนหมดเวลา, เวลาล่าช้า ฯลฯ

ประโยชน์ของฟังก์ชัน SUBTIME()

  1. ใช้ลดเวลาออกจากเวลาเริ่มต้น เช่น ลบ 30 นาที ก่อนเริ่มงาน
  2. คำนวณเวลาล่วงหน้า เช่น เวลาก่อนแจ้งเตือน, เวลาถอยหลัง
  3. วิเคราะห์เวลาทำงานย้อนหลัง, คำนวณเวลาล่าช้า
  4. ใช้ร่วมกับ NOW() หรือ CURTIME() ได้

รูปแบบการใช้งาน

SUBTIME(time_value, sub_interval)
  • time_value คือค่าที่เป็น TIME หรือ DATETIME เช่น '14:30:00' หรือ NOW()
  • sub_interval คือช่วงเวลาที่ต้องการลบในรูปแบบ 'HH:MM:SS' หรือค่าจำนวนวินาที (TIME)

ตัวอย่างการใช้งาน

ลบ 1 ชั่วโมง 15 นาที จากเวลา 10:30:00

SQL
SELECT SUBTIME('10:30:00', '01:15:00') AS result;
-- ผลลัพธ์: 09:15:00

ลบ 30 นาทีจากเวลาปัจจุบัน

SQL
SELECT SUBTIME(NOW(), '00:30:00') AS half_hour_ago;
-- ผลลัพธ์: เวลาปัจจุบัน - 30 นาที

ใช้กับ DATETIME ที่อยู่ในตาราง

SQL
SELECT event_id, start_time,
       SUBTIME(start_time, '00:10:00') AS remind_time
FROM events;

คำนวณเวลาล่าช้าหลังเวลานัด

SQL
SELECT user_id, checkin_time,
       SUBTIME(checkin_time, '08:00:00') AS delay_time
FROM attendance
WHERE checkin_time > '08:00:00';

หมายเหตุ

  • รูปแบบ sub_interval ต้องเป็น 'HH:MM:SS' หากเป็นข้อความ
  • ถ้าใช้ค่าที่ไม่ใช่เวลา จะได้ผลลัพธ์เป็น NULL
  • ไม่สามารถลบแบบ INTERVAL ได้โดยตรง (ต้องใช้กับ DATE_SUB() แทน)
แชร์เรื่องนี้