Her er den fulde kode, der skal følge med det sidste svar (for ekstra klarhed).
Læs datoen fra DB'en i din data-config.xml-fil og cast til et tidsstempel:
select cast(STRT_DT as timestamp) as STRT_DTTS from DATES
Sæt ind i en DataImportHandler-entitet, der ser sådan ud:
<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>
Denne forespørgsel returnerer en oracle.sql.TIMESTAMP, men den vil ikke kortlægges direkte til dato. En script transformer er derfor påkrævet. Derfor introducerer vi script:startDateTransform
. I den samme data-config.xml kan du indsætte JavaScript sådan:
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;
}
Her konverterer vi tidsstemplet til en dato, opdaterer kolonneværdien og returnerer rækken med de nye oplysninger.
Feltet STRT_DT
:
<field column="STRT_DTTS" name="STRT_DT" />
skal nu indeholde den korrekte dato.