09 February 2009

DataStage: Oracle Date

กรณีดึงข้อมูลจาก column ที่มี data type เป็น date หากกำหนด data type ใน datastage เป็น date ตาม table จะมี error เกิดขึ้น

Error Message:
Oracle_Enterprise_0: Error when checking operator: When binding output interface field "HOMELOANDATE" to field "HOMELOANDATE": No default type conversion from type "timestamp" to type "date".

วิธีแก้ไข
1. กำหนด data type ใน oracle stage เป็น timestamp จากนั้นทำการแปลง data type จาก timestamp เป็น date โดยใช้ function TimestampToDate() ดังตัวอย่าง
TimestampToDate(lnk_alscom_application.PERSONALLOANDATE)

หรือ

2. ตอน select ข้อมูลจาก Table ให้ทำการแปลง data โดยใช้ function TO_CHAR เพื่อเปลี่ยนข้อมูลเป็น character โดยใน datastage ให้กำหนด data type เป็น Varchar
TO_CHAR(HOMELOANDATE,'DD/MM/YYYY') as HOMELOANDATE
จากนั้นค่อยแปลงข้อมูลกลับเป็น date อีกที โดยใช้ function StingToDate() ดังนี้
StringToDate(lnk_alscom_application.HOMELOANDATE,"%dd/%mm/%yyyy")
โดยที %dd/%mm/%yyyy เป็น format ของ string
ทั้ง 2 วิธีจะได้ output ออกมาเป็น format YYYY-MM-DD เหมือนกัน

1 comment:

Kittisak Boyd said...

1. เปลี่ยน Data type ใน Oracle Stage ให้เป็น Timestamp
หรือ
2. Import metadata โดยใช้ Orchestrate จะได้ Timestamp มาเลย