ฟังก์ชัน TO_DAYS() ใช้เพื่อแปลงวันที่ (DATE, DATETIME, TIMESTAMP) ให้กลายเป็น “จำนวนวันทั้งหมด” นับตั้งแต่วันที่ '0000-01-01' (วันที่เริ่มต้นของระบบ MySQL) เหมาะสำหรับใช้คำนวณจำนวนวันที่ต่างกันระหว่างวันที่สองวัน ทำงานคล้ายกับ DATEDIFF() แต่ให้ผลลัพธ์ที่นำไปใช้ต่อได้หลากหลาย
ประโยชน์ของฟังก์ชัน TO_DAYS()
- ใช้เปรียบเทียบความต่างของวันด้วยการลบกัน
- ใช้ร่วมกับ
FROM_DAYS()เพื่อแปลงกลับ - ใช้ตรวจสอบลำดับเวลา, กรองข้อมูลย้อนหลัง, หาระยะเวลา
รูปแบบการใช้งาน
TO_DAYS(date_value)
date_valueคือค่าวันที่ เช่น'2025-04-10',NOW(),birth_dateฯลฯ
ตัวอย่างการใช้งาน
แปลงวันที่ให้เป็นจำนวนวัน
SQL
SELECT TO_DAYS('2025-04-10') AS days_count;
-- ผลลัพธ์: เช่น 739260แปลงวันที่ปัจจุบัน
SQL
SELECT TO_DAYS(NOW()) AS today_days;
-- ผลลัพธ์: ค่าจำนวนวันตั้งแต่ '0000-01-01' จนถึงวันนี้ตัวอย่างการประยุกต์ใช้งาน
หาความต่างของวันระหว่าง 2 วันที่ (เทียบเท่า DATEDIFF)
SQL
SELECT TO_DAYS('2025-04-10') - TO_DAYS('2025-04-01') AS day_diff;
-- ผลลัพธ์: 9กรองข้อมูลย้อนหลัง 30 วัน
SQL
SELECT *
FROM posts
WHERE TO_DAYS(NOW()) - TO_DAYS(published_date) <= 30;