BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: Bond_007 ที่ สิงหาคม 27, 2012, 20:57:28 PM

หัวข้อ: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: Bond_007 ที่ สิงหาคม 27, 2012, 20:57:28 PM
ในตาราง patient ข้อมูลตาราง birthdate มีรูปแบบเป็น 19/02/2554 ถ้าผมอยากให้มันแสดงเป็นรูปแบบ 25540201 แบบนี้ต้องเขียนอย่างไรครับ
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: surachat1234 ที่ สิงหาคม 27, 2012, 21:23:21 PM
DATE_FORMAT(birthdate,"%Y%m%d")
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: Bond_007 ที่ สิงหาคม 28, 2012, 08:24:08 AM
ต้องเขียนแบบไหนครับ ผมเขียนไม่ออก  ;D
select concat(fname," ",lname) as fullname,DATE_FORMAT(birthdate(),"%Y%m%d") from patient  limit 100
DATE_FORMAT(birthdate,"%Y%m%d")
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: chitvichai ที่ สิงหาคม 28, 2012, 08:33:39 AM
ต้องเขียนแบบไหนครับ ผมเขียนไม่ออก  ;D
select concat(fname," ",lname) as fullname,DATE_FORMAT(birthdate(),"%Y%m%d") from patient  limit 100
DATE_FORMAT(birthdate,"%Y%m%d")
ลองดูครับ
โค๊ด: [Select]
select concat(fname," ",lname) as fullname,
replace(birthday,"-","") as addate,/*ค.ศ.*/
concat(replace(birthday,"-","")  +5430000) as bddate /*พ.ศ.*/
from patient
limit 100
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: udomchok ที่ สิงหาคม 28, 2012, 09:48:08 AM
ต้องเขียนแบบไหนครับ ผมเขียนไม่ออก  ;D
select concat(fname," ",lname) as fullname,DATE_FORMAT(birthdate(),"%Y%m%d") from patient  limit 100

ที่ผิดพลาดคือ
1. birthdate() มิใช่ function ไม่ต้องมีวงเล็บต่อท้าย
2. field birthdate ไม่มีในตาราง patient มีแต่ birthday ส่วน birthdate นั้นอยู่ในตาราง person
ต้องแก้ไขเป็น
select concat(fname," ",lname) as fullname,DATE_FORMAT(birthday,"%Y%m%d") from patient  limit 100
ได้เป็น คศ. นะ เช่น 19691022
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: Bond_007 ที่ สิงหาคม 28, 2012, 09:53:40 AM
อาจารย์ครับถ้าต้องการให้เป็นปี พศ เช่น 25541022 ต้องทำยังไงต่อครับตอนนี้รันออกมาเป็น คศ ครับ
ต้องเขียนแบบไหนครับ ผมเขียนไม่ออก  ;D
select concat(fname," ",lname) as fullname,DATE_FORMAT(birthdate(),"%Y%m%d") from patient  limit 100

ที่ผิดพลาดคือ
1. birthdate() มิใช่ function ไม่ต้องมีวงเล็บต่อท้าย
2. field birthdate ไม่มีในตาราง patient มีแต่ birthday ส่วน birthdate นั้นอยู่ในตาราง person
ต้องแก้ไขเป็น
select concat(fname," ",lname) as fullname,DATE_FORMAT(birthday,"%Y%m%d") from patient  limit 100
ได้เป็น คศ. นะ เช่น 19691022
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: Bond_007 ที่ สิงหาคม 28, 2012, 10:01:49 AM
ถ้าทำเป็นปี พ.ศ น่าจะเป็นแบบนี้ใช่ไหมคร้บ  ;D
select date_format(birthday+5430000,'%Y%m%d') as birthday  from patient  limit 100
หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: chitvichai ที่ สิงหาคม 28, 2012, 10:49:12 AM
ถ้าทำเป็นปี พ.ศ น่าจะเป็นแบบนี้ใช่ไหมคร้บ  ;D
select date_format(birthday+5430000,'%Y%m%d') as birthday  from patient  limit 100

1: select concat(date_format(birthday,'%Y%m%d')+5430000) as birthday  from patient  limit 100

or

2: select concat(replace(birthday,'-','')+5430000) as birthday from patient limit 100

1: ใช้ date_format function จะได้แต่ปี ค.ศ. แล้ว +5430000 จะเป็น ตัวแล้ว ต้องใช้ string function ช่วยเปลี่ยนเป็น พ.ศ.

2: ใช้ string function

หัวข้อ: Re: สอบถามการเขียนคำสั่งแปลงรูปแบบครับ
เริ่มหัวข้อโดย: udomchok ที่ สิงหาคม 28, 2012, 13:01:50 PM
ผมลองแบบนี้ก็ได้ออกมาครับ
select concat(fname," ",lname) as fullname,concat(DATE_FORMAT(birthday,"%Y")+543,DATE_FORMAT(birthday,"%m%d")) as cc from patient  limit 100

หรือตามนี้ก็ได้ครับ
1: select concat(date_format(birthday,'%Y%m%d')+5430000) as birthday  from patient  limit 100

or

2: select concat(replace(birthday,'-','')+5430000) as birthday from patient limit 100