PlusMagi's Blog By Pitt Phunsanit MariaDB,MySql,WordPress WordPress: ดูว่า post ทุก ๆ วันเสาร์ใช่มั๋ย

WordPress: ดูว่า post ทุก ๆ วันเสาร์ใช่มั๋ย

ด้วยความที่ตั้งใจจะ 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') ไว้ด้วย เพื่อให้ได้เฉพาะบทความที่เผยแพร่แล้วหรือตั้งเวลาไว้ล่วงหน้าครับ

อ่านเเพิ่มเติม

ป้ายกำกับ:, , , ,