Đây là toàn bộ mã đi kèm với câu trả lời cuối cùng (để rõ hơn).
Trong tệp data-config.xml của bạn, hãy đọc ngày tháng từ DB và truyền sang dấu thời gian:
select cast(STRT_DT as timestamp) as STRT_DTTS from DATES
Đặt vào một thực thể DataImportHandler, trông giống như sau:
<entity name="startDate" transformer="script:startDateTransform"
query="select cast(STRT_DT as timestamp) as STRT_DTTS from DATES" >
<field column="STRT_DTTS" name="STRT_DT" />
</entity>
Truy vấn này sẽ trả về oracle.sql.TIMESTAMP, nhưng nó sẽ không ánh xạ trực tiếp đến ngày. Do đó, cần phải có một biến áp kịch bản. Do đó, chúng tôi giới thiệu script:startDateTransform
. Trong cùng data-config.xml, bạn có thể chèn JavaScript như sau:
function startDateTransform(row){
// Get the timestamp and convert it to a date
var dateVal = row.get("STRT_DTTS").dateValue();
// Put the correct date object into the original column
row.put("STRT_DTTS", dateVal);
return row;
}
Ở đây, chúng tôi chuyển đổi dấu thời gian thành ngày tháng, cập nhật giá trị cột và trả về hàng với thông tin mới.
Trường STRT_DT
:
<field column="STRT_DTTS" name="STRT_DT" />
bây giờ sẽ chứa ngày chính xác.