Hello,

I am attempting to parse timestamps of various formats/precision within the 
same field in json.  Here is an example (using Nifi 1.11.4):

input:

{"cd": "2021-02-24T12:01:01"}
{"cd": "2021-02-24T12:01:01Z"}
{"cd": "2021-02-25T12:01:01.99"}
{"cd": "2021-02-26T12:01:01.999"}

conversion in UpdateRecord:

/cd = format(toDate(/cd, "yyyy-MM-dd'T'HH:mm:ss"), 
"yyyy-MM-dd'T'HH:mm:ss.SSSZZ")

output:

{"cd":"2021-02-24T12:01:01.000+0000"}
{"cd":"2021-02-24T12:01:01.000+0000"}
{"cd":"2021-02-25T12:01:01.000+0000"} << precision lost
{"cd":"2021-02-26T12:01:01.000+0000"} << precision lost

changing the conversion in UpdateRecord to this:

/cd = format(toDate(/cd, "yyyy-MM-dd'T'HH:mm:ss.SSS"), 
"yyyy-MM-dd'T'HH:mm:ss.SSSZZ")

output:

{"cd":"2021-02-24T12:01:01"}  << skipped
{"cd":"2021-02-24T12:01:01Z"} << skipped
{"cd":"2021-02-25T12:01:01.099+0000"} << not sure if this is correct
{"cd":"2021-02-26T12:01:01.999+0000"} << correct


Is there a way to change the timestamp parsing format on a per-record basis?

Thanks,
Greg

Reply via email to