Mine

รูปภาพของฉัน
หาดใหญ่, ภาคใต้, Thailand
ชอบเอาใจ แต่ก็เอาแต่ใจ

วันจันทร์ที่ 30 สิงหาคม พ.ศ. 2553

หากต้องการเขียน SQL กำกับเสาร์-อาทิตย์ ใน PostgreSQL เขาก็มีนะ

สวัสดีค่ะ วันนี้ได้เข้าไปตอบกระทู้ใน hospital-os.com "อยากให้มีปฏิทินวันหยุดราชการในโปรแกรม Hospital OS"
ก็เลยนำมาฝากเป็น บทความกันค่ะ

การหาวันว่าวันที่นี้ตรงกับวันอะไร ใน 7 วัน (อาทิตย์ - เสาร์)
โดยที่
0 = วันอาทิตย์
1 = วันจันทร์
2 = วันอังคาร
3 = วันพุธ
4 = วันพฤหัส
5 = วันศุกร์
6 = วันเสาร์

สำหรับ SQL ที่จะหาค่าข้างต้น ดังนี้ค่ะ
SELECT
visit_begin_visit_time
,EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) as numday_of_week
,case when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 0)
then 'อาทิตย์'
when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 1)
then 'จันทร์'
when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 2)
then 'อังคาร'
when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 3)
then 'พุธ'
when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 4)
then 'พฤหัสบดี'
when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 5)
then 'ศุกร์'
when (EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) = 6)
then 'เสาร์'
end as day_of_week
from t_visit
Where
(EXTRACT(DOW FROM cast( (cast(substring(visit_begin_visit_time,1,4) as numeric) - 543) || substring(visit_begin_visit_time,5) as timestamp)) ) IN (0,6)

เท่านี้เราก็ได้ วันออกมาแล้วค่ะ ...

ไม่มีความคิดเห็น:

แสดงความคิดเห็น