ตัวอย่างคำสั่ง 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 )นะฮัฟ ...เพื่อมวลมนุษยชาติ
ความคิดเห็น