วันพฤหัสบดีที่ 22 ธันวาคม พ.ศ. 2554

Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก

บทความเกี่ยวกับ : Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก
Advertisements

วันนี้จะนำเสอนวิธีการจัด Format วันที่ใน Oracle ครับ
หลายๆ คนคงเคยเจอปัญหาเรื่องการแสดง พ.ศ. หรือ ชื่อเดือนให้เป็นภาษาไทยหรือจะเอาภาษาอะไรก็ได้ตามที่เราต้องการ

วันนี้จะเอาวิธีง่่ายๆ มาฝากครับ หากคุณกำลังต้องการ จัด Format วันที่ใน Oracle
ให้เป็นแบบนี้ คุณมาถูกที่แล้วครับ

20 พ.ย. 2554
20 NOV 2011

วิธีการทำแบบนี้ครับ
SELECT TO_CHAR(SYSDATE, 'dd MON yyyy', 'NLS_CALENDAR=''THAI BUDDHA'' NLS_DATE_LANGUAGE=THAI')
 FROM DUAL
แบบนี้จะแสดง 28 ธ.ค. 2554 ครับ

ตัวแปรที่สำคัญคือ
- 'dd MON yyyy'   อันนี้เป็น format ครับ MON เพราะผมต้องการตัวย่อเดือน
- NLS_CALENDAR ตัวนี้แหละครับที่ทำให้ พศ แสดงเป็น พุทธศักราช 2554 (THAI BUDDHA)
- NLS_DATE_LANGUAGE  ตัวนี้กำหนดให้แสดงเดือนเป็นภาษาไทยครับ (THAI)

ถ้าเราอยากแสดงเป็นภาษาอังกฤษ ก็ง่ายๆตามนี้ครับ
SELECT TO_CHAR(SYSDATE, 'dd MON yyyy', ' NLS_DATE_LANGUAGE=AMERICAN')
 FROM DUAL
จะได้ผลเป็น 28 DEC 2011


ถ้าหากเราไม่ใส่ option อะไรเพิ่มเติมมันก็จะแสดงตามค่า default ที่ set ไว้ครับ
อย่าง database ผม set เป็น ปี ค.ศ แต่ ภาษาไทย ถ้า query ตามนี้
 SELECT TO_CHAR(SYSDATE, 'dd MON yyyy')
 FROM DUAL
 ได้ผลเป็น  28 ธ.ค. 2011 ซึ่งมันจะแปรผันไปตาม DB ที่ลงไว้ครับ
ทางที่ดีเราควรจะกำหนด format ให้ชัดเจนเพราะบางที โปรแกรมที่เราเขียนอาจจะเอาไป Run ใน Database ที่ใหนก็ได้ครับ