BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: nukhari ที่ ตุลาคม 12, 2017, 10:37:29 AM

หัวข้อ: การกำหนดวันที่ในสัปดาห์นั้นๆ ให้ตรงกับวันอังคาร เขียน sql อย่างไรครับ
เริ่มหัวข้อโดย: nukhari ที่ ตุลาคม 12, 2017, 10:37:29 AM
#ต้องการให้วันที่ในสัปดาห์นั้นๆ ให้ตรงกับวันอังคารครับ จะเขียน sql อย่างไรครับ ขอขอบพระคุณล่วงหน้ามากๆนะครับผม
SELECT
p.pname,
p.fname,
p.lname,
DATE_ADD(a.lmp,INTERVAL '10' WEEK) AS date_1st,
DATE_ADD(a.lmp,INTERVAL '18' WEEK) AS date_2nd,
DATE_ADD(a.lmp,INTERVAL '26' WEEK) AS date_3rd,
DATE_ADD(a.lmp,INTERVAL '32' WEEK) AS date_4th,
DATE_ADD(a.lmp,INTERVAL '38' WEEK) AS date_5th
FROM person_anc as a
LEFT OUTER JOIN person as p on a.person_id=p.person_id
WHERE lmp > '2016-10-1'

หัวข้อ: Re: การกำหนดวันที่ในสัปดาห์นั้นๆ ให้ตรงกับวันอังคาร เขียน sql อย่างไรครับ
เริ่มหัวข้อโดย: nukhari ที่ ตุลาคม 12, 2017, 12:28:22 PM
#ได้แล้วประมาณนี้ ไม่รู้ว่าถูกไหม

SELECT
p.pname,
p.fname,
p.lname,
#ครั้งที่ 1
CASE DAYOFWEEK(DATE_ADD(a.lmp,INTERVAL '10' WEEK))
WHEN 1 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL 2 DAY)
WHEN 2 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL 1 DAY)
WHEN 3 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL 0 DAY)
WHEN 4 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL -1 DAY)
WHEN 5 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL -2 DAY)
WHEN 6 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL -3 DAY)
WHEN 7 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '10' WEEK),INTERVAL -4 DAY)
else cast(a.lmp as date) end as date_1st,

#ครั้งที่ 2
CASE DAYOFWEEK(DATE_ADD(a.lmp,INTERVAL '18' WEEK))
WHEN 1 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL 2 DAY)
WHEN 2 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL 1 DAY)
WHEN 3 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL 0 DAY)
WHEN 4 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL -1 DAY)
WHEN 5 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL -2 DAY)
WHEN 6 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL -3 DAY)
WHEN 7 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '18' WEEK),INTERVAL -4 DAY)
else cast(a.lmp as date) end as date_2nd,

#ครั้งที่ 3
CASE DAYOFWEEK(DATE_ADD(a.lmp,INTERVAL '26' WEEK))
WHEN 1 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL 2 DAY)
WHEN 2 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL 1 DAY)
WHEN 3 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL 0 DAY)
WHEN 4 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL -1 DAY)
WHEN 5 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL -2 DAY)
WHEN 6 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL -3 DAY)
WHEN 7 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '26' WEEK),INTERVAL -4 DAY)
else cast(a.lmp as date) end as date_3rd,


#ครั้งที่ 4
CASE DAYOFWEEK(DATE_ADD(a.lmp,INTERVAL '32' WEEK))
WHEN 1 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL 2 DAY)
WHEN 2 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL 1 DAY)
WHEN 3 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL 0 DAY)
WHEN 4 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL -1 DAY)
WHEN 5 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL -2 DAY)
WHEN 6 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL -3 DAY)
WHEN 7 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '32' WEEK),INTERVAL -4 DAY)
else cast(a.lmp as date) end as date_4th,

#ครั้งที่ 5
CASE DAYOFWEEK(DATE_ADD(a.lmp,INTERVAL '38' WEEK))
WHEN 1 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL 2 DAY)
WHEN 2 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL 1 DAY)
WHEN 3 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL 0 DAY)
WHEN 4 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL -1 DAY)
WHEN 5 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL -2 DAY)
WHEN 6 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL -3 DAY)
WHEN 7 THEN DATE_ADD(DATE_ADD(a.lmp,INTERVAL '38' WEEK),INTERVAL -4 DAY)
else cast(a.lmp as date) end as date_5th
FROM person_anc as a
LEFT OUTER JOIN person as p on a.person_id=p.person_id
WHERE lmp > '2016-10-1'
ORDER BY
a.lmp ASC
หัวข้อ: Re: การกำหนดวันที่ในสัปดาห์นั้นๆ ให้ตรงกับวันอังคาร เขียน sql อย่างไรครับ
เริ่มหัวข้อโดย: nukhari ที่ ตุลาคม 30, 2017, 14:59:38 PM
ขอบคุณครับ