如何在ESQL中将TIMESTAMP转换为UTC毫秒

时间:2019-08-28 14:23:13

标签: datetime unix-timestamp extended-sql

是否有一个ESQL函数将TIMESTAMP转换为UTC毫秒?

这就是我所做的:

DECLARE eventTimeInteger INTEGER CAST ((eventTimeStamp - epochTimeStamp) SECOND as INTEGER);  

但我一直收到此错误。因此,我怀疑“-”是一个问题,但是我不确定该如何解决。

BIP2420E:(.Event_SeparateMessages.Main,142.60):“-”运算符的数据类型无效或不兼容。

或者该运算符的操作数的数据类型对该运算符无效,或者该数据类型不兼容。

在行和列“ 142.60”周围的节点“ .Event_SeparateMessages.Main”中更正您的ESQL表达式的语法,然后重新部署消息流:确保操作数的数据类型有效并且彼此兼容。 / p>

以下是我尝试过的方法,但什至不会部署。

--Converting time in string to timestamp
DECLARE source CHARACTER eventTime ;
DECLARE eventTimeStamp CHARACTER;
DECLARE pattern CHARACTER 'yyyy-MM-dd''T''HH:mm:ss.SSS''Z';
SET eventTimeStamp = CAST(source AS TIMESTAMP FORMAT pattern);
DECLARE epochTimeStamp TIMESTAMP '1970-01-01 00:00:00';

--Casting time from timestamp to Integer                       
DECLARE eventTimeInteger INTEGER CAST ((eventTimeStamp - epochTimeStamp) SECOND as INTEGER);  

我需要“ eventTimeInteger”以秒为单位提供时间戳。

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的代码,则问题是您试图从TIMESTAMP集中减去CHARACTER

edit:注意到eventTimeStamp的SET更改,但是日期数学仍将给出 INTERVAL 输出,而不是 INTEGER

DECLARE EpocTimeStamp TIMESTAMP; 
DECLARE eventTimeStamp INTERVAL; 

SET EpocTimeStamp = TIMESTAMP '1970-01-01 00:00:00'; 
SET eventTimeStamp = (CURRENT_TIMESTAMP - EpocTimeStamp) SECOND * 1000;
CAST(eventTimeStamp AS INTEGER);