datediff() เป็น ฟังก์ชันเกี่ยวกับวันที่ของ mysql ใช้สำหรับหาค่าต่างของวันที่สองวันที่
ตัวอย่าง
SELECT DATEDIFF("2012-01-12",NOW()) // วันที่ปัจจุบันคือ 2012-01-11 คือค่า NOW() // ค่าที่ได้จะเท่ากับ 1 ได้จาก วันที่แรก ลบด้วย วันที่ที่สอง // 2012-01-12 ลบ ด้วย 2012-01-11 คือได้ค่าต่างกัน 1 วัน // อธิบายได้ว่า วันที่แรกมากกว่าวันที่ที่สอง 1 วัน
ตัวอย่างถ้ากำหนดวันที่แรก น้อยกว่าวันที่ที่สอง ค่าที่ได้จะติดลบ
SELECT DATEDIFF(NOW(),"2012-01-12") // วันที่ปัจจุบันคือ 2012-01-11 คือค่า NOW() // ค่าที่ได้จะเท่ากับ -1 ได้จาก วันที่แรก ลบด้วย วันที่ที่สอง // 2012-01-11 ลบ ด้วย 2012-01-12 คือได้ค่าต่างกัน 1 วัน แต่มีเครื่องหมาย - // (ติดลบกำหนดว่า วันที่แรกน้อยกว่าวันที่ที่สองอยู่ 1 วัน)
แนวทางการนำไปใช้งาน
การลบรายการที่เลยวันที่กำหนดมาแล้ว 3 วัน
DELETE FROM table WHERE DATEDIFF(date_field,NOW())>=3 // คำสั่งลบรายการที่ วันที่ date_field มากกว่าวันที่ปัจจุบัน ตั้งแต่ 3 วันขึ้นไป // (date_field คือวันที่ที่ใช้ตรวจสอบ มีรูปแบบ 0000-00-00 เช่น 2012-01-05) // การทำงานคือ หลังจาก 3 วันนับจากวันที่กำหนด date_field รายการนั้นๆ ก็จะถูกลบ
การเลือกรายการที่วันที่ ก่อนครบกำหนด 7 วัน
SELECT * FROM table WHERE DATEDIFF(NOW(),date_field)=-7 // คำสั่งเลือกรายการ ที่จะครบกำหนดวันที่ date_field ในอีก 7 วัน // (date_field คือวันที่ที่ใช้ตรวจสอบ มีรูปแบบ 0000-00-00 เช่น 2012-01-05) // ในกรณีนี้ date_field คือวันที่ที่จะครบกำหนด // การทำงานคือ ถ้าอีก 7 วันนับจากวันนี้ จนถึงวันที่ครบกำหนด date_field รายการก็จะถูกนำมาแสดง