ด้วยความที่ตั้งใจจะ post ทุก ๆ วันเสาร์ที่เป็นประจำทุกวัน แต่ก็มีบางครั้งที่พลาด ตั้งเวลาเผยแพร่เป็นวันเสาร์พลาดไปเหมือนกัน เลยเขียน query ออกมาหาว่า พลาด บทความไหนบ้าง
SELECT
ID,
post_date,
post_title,
-- แปลงเลขวันเป็นชื่อภาษาไทยเพื่อตรวจสอบ
CASE DAYOFWEEK(post_date)
WHEN 1 THEN 'อาทิตย์'
WHEN 2 THEN 'จันทร์'
WHEN 3 THEN 'อังคาร'
WHEN 4 THEN 'พุธ'
WHEN 5 THEN 'พฤหัสบดี'
WHEN 6 THEN 'ศุกร์'
WHEN 7 THEN 'เสาร์'
END AS day_name_th
FROM
`wp_posts`
WHERE
post_type = 'post'
AND post_status IN ('publish', 'future')
-- เงื่อนไขหลัก: DAYOFWEEK ต้องไม่ใช่ 7 (วันเสาร์)
AND DAYOFWEEK(post_date) <> 7
ORDER BY
post_date ASC;
คำอธิบายเพิ่มเติม
DAYOFWEEK(post_date) <> 7: นี่คือหัวใจหลักของคำสั่งนี้ครับ มันจะสั่งให้ MySQL ข้ามทุกโพสต์ที่ตรงกับวันเสาร์ ( เลข 7 ) ไป และดึงมาเฉพาะวันอาทิตย์ถึงวันศุกร์ ( เลข 1 – 6 ) เท่านั้น- ถ้าต้องการเปลี่ยนเงื่อนไขเป็นเขียนในวัน เสาร์ – อาทิตย์ ก็แก้เงื่อนไขเป็น
AND DAYOFWEEK(post_date) NOT IN (1, 7)
จะเห็นว่าฝรั่งเค้าไม่ได้นับลำดับวันเหมือนคนไทย - การตรวจสอบ: เพิ่มคอลัมน์
day_name_thมาให้ด้วย เพื่อให้คเห็นชัด ๆ ในผลลัพธ์ว่าโพสต์ที่ดึงมานั้น เป็นวันอะไรบ้าง - กรองสถานะ: ใส่
post_status IN ('publish', 'future')ไว้ด้วย เพื่อให้ได้เฉพาะบทความที่เผยแพร่แล้วหรือตั้งเวลาไว้ล่วงหน้าครับ
อ่านเเพิ่มเติม
