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

ฟังก์ชัน TO_DAYS() ใช้เพื่อแปลงวันที่ (DATE, DATETIME, TIMESTAMP) ให้กลายเป็น “จำนวนวันทั้งหมด” นับตั้งแต่วันที่ '0000-01-01' (วันที่เริ่มต้นของระบบ MySQL) เหมาะสำหรับใช้คำนวณจำนวนวันที่ต่างกันระหว่างวันที่สองวัน ทำงานคล้ายกับ DATEDIFF() แต่ให้ผลลัพธ์ที่นำไปใช้ต่อได้หลากหลาย

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

  1. ใช้เปรียบเทียบความต่างของวันด้วยการลบกัน
  2. ใช้ร่วมกับ FROM_DAYS() เพื่อแปลงกลับ
  3. ใช้ตรวจสอบลำดับเวลา, กรองข้อมูลย้อนหลัง, หาระยะเวลา

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

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;
แชร์เรื่องนี้