ฟังก์ชัน SUBTIME() ใช้เพื่อลบเวลาออกจากค่า TIME หรือ DATETIME ที่กำหนด เพื่อหาค่าเวลาก่อนหน้า เช่น ลบ 2 ชั่วโมง, 30 นาที, หรือ 45 วินาที เป็นต้น เหมาะสำหรับการคำนวณเวลาก่อนเริ่มงาน, ก่อนหมดเวลา, เวลาล่าช้า ฯลฯ
ประโยชน์ของฟังก์ชัน SUBTIME()
- ใช้ลดเวลาออกจากเวลาเริ่มต้น เช่น ลบ 30 นาที ก่อนเริ่มงาน
- คำนวณเวลาล่วงหน้า เช่น เวลาก่อนแจ้งเตือน, เวลาถอยหลัง
- วิเคราะห์เวลาทำงานย้อนหลัง, คำนวณเวลาล่าช้า
- ใช้ร่วมกับ
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()แทน)