ตัดสินใจส่ง XML เข้าไป Parse ใน Oracle procedure แทนที่จะ Parse ด้วย Erlang แล้วส่งไป ซึ่งก็น่าจะดีกว่า (หันไปเขียน PL อย่างเดียว)
แต่พอ Extract XML มาก็เจอปัญหา ISO8601 ที่ก่อนนี้ผมใช้ Erlang iso8601 library parse ออกมาแล้ว convert เป็น Oracle DateTime format ก่อนนำไปยัดเข้า Statement แล้วส่งผ่าน ODBC/OCI
แต่พอเป็น PL เหมือนต้องเรียนใหม่ (เหมือนเขียน Pascal เลยนะ) หาทาง Convert ISO8601 ที่ Generate มาจาก .net ไม่เจอ เพราะ format ที่มาเป็นแบบนี้
2013-08-30T14:26:58.1640094+07:00
ค่อยๆ ไล่ที่ละตัวจนได้ format
yyyy-mm-dd"T"hh24:mi:ss.ff7
ด้วย function TO_TIMESTAMP ของ PL
แต่ TimeZone นี่สิยังไม่ผ่าน อ่านในเอกสารพบว่า
ถ้าเป็น named timezone เช่น
CET : Central European Time
PST : Pacific Standard Time
ให้ใช้ TZR
ถ้าเป็น +/- เวลาเช่น
+07:00 ประเทศไทยเรา
ให้ใช้ TZH:TZM
แต่ลองใช้ยังไงก็เจอ ORA-01821 : date format not recognised
สุดท้าย พบว่า ต้องใช้ TO_TIMESTAMP_TZ ก็เสียเวลาปีสามชั่วโมงเต็มๆ
TO_TIMESTAMP_TZ('2013-08-30T14:26:58.1640094+07:00', 'yyyy-mm-dd"T"hh24:mi:ss.ff7TZH:TZM');
ไม่มีความคิดเห็น:
แสดงความคิดเห็น