Beat Fuellemann created NIFI-15599:
--------------------------------------

             Summary: QueryRecord CAST String with miliseconds to TIMESTAMP not 
always works as expected 
                 Key: NIFI-15599
                 URL: https://issues.apache.org/jira/browse/NIFI-15599
             Project: Apache NiFi
          Issue Type: Bug
    Affects Versions: 2.7.2
            Reporter: Beat Fuellemann
         Attachments: Bildschirmfoto 2026-02-13 um 07.55.46.png, Bildschirmfoto 
2026-02-13 um 07.56.05.png

With queryRecord I need to cast a String with miliseconds format (2026-01-01 
12:12:00.123) to a timestamp.

Unfortunately, that doesn't work in each case.

------------------------------------
Case1: (String directly to timestamp)
CAST('2026-01-01 12:12:00.123' AS TIMESTAMP) AS ts_from_string_timestamp

Results:  "ts_from_string_timestamp" : "2026-01-01T12:12:00Z"  -> *MILISECONDS 
are dropped*

------------------------------------

Case2: (String from content to timestamp)
CAST(ts_json AS TIMESTAMP) AS ts_from_json_timestamp,

Result:   "ts_from_json_timestamp" : "2026-03-03T03:23:55.{*}456{*}Z" -> 
MILISECONDS are shown as expected

------------------------------------

Case3: (String from attribute to timestamp)
CAST('${ts_attr}' AS TIMESTAMP) AS ts_from_attr_timestamp

Result: "ts_from_attr_timestamp" : "2026-02-02T20:20:20Z"  -> *MILISECONDS are 
dropped*

 

QueryRecord SQL:
{code:java}
select 
CAST('2026-01-01 12:12:00.123' AS TIMESTAMP) AS ts_from_string_timestamp,
CAST(ts_json AS TIMESTAMP) AS ts_from_json_timestamp,
CAST('${ts_attr}' AS TIMESTAMP) AS ts_from_attr_timestamp
from flowfile {code}
Result Flowfile original as avro:
{code:java}
Objavro.schema�{"type":"record","name":"nifiRecord","namespace":"org.apache.nifi","fields":[{"name":"ts_from_string_timestamp","type":{"type":"long","logicalType":"timestamp-millis"}},{"name":"ts_from_json_timestamp","type":[{"type":"long","logicalType":"timestamp-millis"},"null"]},{"name":"ts_from_attr_timestamp","type":{"type":"long","logicalType":"timestamp-millis"}}]}avro.codecnull{code}
Result Flowfile  formated as avro:
{code:java}
[ {
  "ts_from_string_timestamp" : "2026-01-01T12:12:00Z",
  "ts_from_json_timestamp" : "2026-03-03T03:23:55.456Z",
  "ts_from_attr_timestamp" : "2026-02-02T20:20:20Z"
} ]{code}
Because it works in case where the string is get from json content, I think it 
is a bug in nifi and NOT a limitation of calcite SQL.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to