ผู้เขียน หัวข้อ: การกำหนดวันที่ในสัปดาห์นั้นๆ ให้ตรงกับวันอังคาร เขียน sql อย่างไรครับ  (อ่าน 3237 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ nukhari

  • Jr. Member
  • **
  • กระทู้: 75
  • อนิจจา วะตะ สังขารา
  • Respect: 0
    • ดูรายละเอียด
#ต้องการให้วันที่ในสัปดาห์นั้นๆ ให้ตรงกับวันอังคารครับ จะเขียน 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'

โรงพยาบาลส่งเสริมสุขภาพตำบลหนองทุ่ม อำเภอเซกา จังหวัดบึงกาฬ

ครั้งแรกขึ้นระบบเอง on June 17, 2013.
Server : IBM System x3100 M4
CentOS 6.5+Percona mysql 5.5

ปัจจุบัน ขึ้นระบบเอง on June 15, 2017.
Server : HPE ProLiant ML10 Gen9
CentOS 6.7 + BMSxTraBackupGUI V9.0f (percona mysql 5.6)

ออฟไลน์ nukhari

  • Jr. Member
  • **
  • กระทู้: 75
  • อนิจจา วะตะ สังขารา
  • Respect: 0
    • ดูรายละเอียด
#ได้แล้วประมาณนี้ ไม่รู้ว่าถูกไหม

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
โรงพยาบาลส่งเสริมสุขภาพตำบลหนองทุ่ม อำเภอเซกา จังหวัดบึงกาฬ

ครั้งแรกขึ้นระบบเอง on June 17, 2013.
Server : IBM System x3100 M4
CentOS 6.5+Percona mysql 5.5

ปัจจุบัน ขึ้นระบบเอง on June 15, 2017.
Server : HPE ProLiant ML10 Gen9
CentOS 6.7 + BMSxTraBackupGUI V9.0f (percona mysql 5.6)

ออฟไลน์ nukhari

  • Jr. Member
  • **
  • กระทู้: 75
  • อนิจจา วะตะ สังขารา
  • Respect: 0
    • ดูรายละเอียด
โรงพยาบาลส่งเสริมสุขภาพตำบลหนองทุ่ม อำเภอเซกา จังหวัดบึงกาฬ

ครั้งแรกขึ้นระบบเอง on June 17, 2013.
Server : IBM System x3100 M4
CentOS 6.5+Percona mysql 5.5

ปัจจุบัน ขึ้นระบบเอง on June 15, 2017.
Server : HPE ProLiant ML10 Gen9
CentOS 6.7 + BMSxTraBackupGUI V9.0f (percona mysql 5.6)