Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 08-29-2018 02:56 PM
Hi,
With NiFi, I'm picking up a CSV file whose records have a bit of a silly timestamp format: MM-dd-yyyy HH:mm:ss. I want to convert this into yyyy-MM-dd HH:mm:ss before attempting to insert this into a SQL server datetime field.
To do this, I'm trying the ConvertRecord processor, with a CSVReader and currently a JSONRecordSetWriter (convenient since it allows me easily read the resulting data. An example CSV is:
id;timestamp 1;11-12-2016 9:38:13 2;12-12-2016 9:38:14 3;12-21-2016 9:38:15
For the CSVReader, my schema text is:
{
"type": "record",
"name": "testdata",
"fields": [
{
"name": "id",
"type": "int"
},
{
"name": "timestamp",
"type": {"type":"string","logicalType":"timestamp"}
}
]
}
I've set the property Timestamp format to MM-dd-yyyy HH:mm:ss.
I'm using the same schema text for the JSONRecordSetWriter and have the Timestamp format set to yyyy--MM-dd HH:mm:ss.
I'm expecting this to achieve the datetime conversion that I need to do, but in the resulting JSON my datetime field is exactly the same.
Attached you'll find and XML template that demos this.
Am I going about this the wrong way and completely misunderstanding what ConvertRecord does? Am I missing something?datetime-format-conversion.xml
Edit: I'm still interested to hear your take on this, but as it so often goes I solved the problem a little while after I posted this question. I'm using UpdateRecord and doing:
${field.value:toDate('MM-dd-yyyy HH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}That works for me.
Created 08-31-2018 07:13 AM
Per @Steven Matison's suggestion, I'm posting the solution to the problem I was facing as an answer:
I was using the wrong processor. It turns out the UpdateRecord processor is a good fit for this. I'm updating the field in question with the following expression language command:
${field.value:toDate('MM-dd-yyyy HH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}Here's an XML template that demonstrates this functionality: updaterecord-datetime-conversion.xml
Created 06-04-2020 04:58 AM
Hi ,
My input data is a JSON which has value like "Thu Jun 04 11:54:54 UTC 2020". How should I convert this in AvroSchema "YYYY-MM-DD hh:mm:ss".
Created 06-19-2020 11:26 AM
"UpdateRecord" processor with below syntax resolved the issue.
${field.value:toDate("EEE MMM dd HH:mm:ss z yyyy"):format("yyyy-MM-dd HH:mm:ss")}