MYSQL การ QUERY ข้อมูลด้วย WEEKDAY ให้เริ่มต้นวันอาทิตย์เท่ากับ 0

ปกติแล้วคำสั่ง WEEKDAY ของ MySQL จะคืนค่าวันจันทร์ เป็น 0 และ วันอาทิตย์เป็น 6 ซึ่งหากนำไปใช้ต่อโดย PHP ที่เรามักจะกำหนดค่าให้วันเริ่มต้นเป็น วันอาทิตย์ มีค่าเท่ากับ 0 ไปจนถึงวันเสาร์คือ 6 การนำไปใช้ต่อจะค่อนข้างลำบาก
ตัวอย่างการใช้งาน WEEKDAY()
SELECT
  `order_id`,
  `order_date`,
  WEEKDAY(`order_date`) AS `weekday`
FROM `orders`

ผลลัพท์เป็นไปตามตารางด้านล่าง ซึ่งวันที่ 2023-06-04 เป็นวันอาทิตย์ ทำให้ WEEKDAY คืนค่า 6 (WEEKDAY คืนค่าโดยเริ่มนับจากวันจันทร์เป็นวันที่ 0 ถึงวันอาทิตย์เป็นวันที่ 6 นับเป็นตัวเลข 1, 2, 3, 4, 5, 6, 0 ตามลำดับ)

เราสามารถเขียนคำสั่ง ของ MySQL ให้ WEEKDAY คืนค่าเริ่มต้นเป็น วันอาทิตย์ เท่ากับ 0 ได้ดังนี้
SELECT
  `order_id`,
  `order_date`,
  ETL(WEEKDAY(create_date) + 1, 1, 2, 3, 4, 5, 6) AS `weekday`
FROM `orders`
จากรูปจะเห็นว่า วันอาทิตย์ (2023-06-04) คืนค่าเป็น 0 แล้ว

มีอีกวิธีหาก DBMS ไม่รองรับคำสั่ง ETL (ผมทดสอบบน MariaDB มันทำงานได้นะ) คำสั่งด้านล่างมันให้ผลลัพท์เหมือนกัน
SELECT
  `order_id`,
  `order_date`,
  MOD((WEEKDAY(`order_date`) + 1), 7) AS `weekday`
FROM `orders`

 
^