ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

SQL

คำสั่ง SQL นับวันไม่รวมเสาร์-อาทิตย์ และวันหยุด

ตัวอย่างคำสั่ง SQL เพื่อนับจำนวนวันโดยไม่รวมวันเสาร์-อาทิตย์ และวันหยุด

SELECT DATEDIFF(d, '2017-01-01', '2017-01-31') - DATEDIFF(wk, '2017-01-01', '2017-01-31') * 2 - CASE WHEN DATENAME(dw, '2017-01-01') 
                         <> 'Saturday' AND DATENAME(dw, '2017-01-31') = 'Saturday' THEN 1 WHEN DATENAME(dw, '2017-01-01') = 'Saturday' AND DATENAME(dw, '2017-01-31') <> 'Saturday' THEN - 1 ELSE 0 END - 2 AS date_count

ตัวอย่างนี้จะนับจำนวนวันในเดือนมกราคมปี 2017 ซึ่งมีวันหยุด 2 วัน (...END - 2 )

ผลลัพท์ date_count = 20

หมายเหตุ วันหยุด จำนวน 2 วัน (...END - 2 ) นั้น เราสามารถสร้างตารางในการเก็บวันหยุด แล้ว SELECT COUNT() มาได้ เช่น ตารางชื่อ hr_day_off

 (SELECT        COUNT(*) AS Expr1
                               FROM            dbo.hr_day_off AS day_off
                               WHERE        (day_off.off_at BETWEEN '2017-01-01' AND '2017-01-31') AND (DATENAME(dw, day_off.off_at) <> 'Saturday') AND (DATENAME(dw, day_off.off_at) <> 'Sunday'))

เอาคำสั่งนี้แทนเลข 2 (...END - 2 )นะฮัฟ ...เพื่อมวลมนุษยชาติ

ติดปัญหาตอนทำตาม? ถามในชุมชน

ความคิดเห็น (0)

ยังไม่มีความคิดเห็น — เริ่มคุยเป็นคนแรก ถามสิ่งที่สงสัย หรือแชร์ประสบการณ์ของคุณ