我需要使用logstash从Teradata数据库中获取一些数据。为了只获取我想要使用的最新数据logstash :sql_last_value
设置为跟踪列TS,时间戳类型。我很难从数据库中获取时间戳值。
在teradata论坛上发现了一个想法:
SELECT CAST(CURRENT_DATE AS TIMESTAMP(0)) + ((CURRENT_TIME - TIME '00:00:00') HOUR TO SECOND(0));
无论我如何尝试格式化时间数据库,它总是返回一个连接到TS字段的错误(通常是时间部分)。这适用于以上'当前'参数,但我无法使用数据库中的实际值。
示例字段:"datefld" => "2018-04-15"
,"timefld" => 125318.01
(格式后12:53:18)。
任何想法如何为后者添加时间戳作为WHERE
中的参数?
SQL语句,现在是:
SELECT
CAST(DateFld AS TIMESTAMP(0)) + ((TimeFld - TIME '00:00:00') HOUR TO SECOND(0)) as TS,
DateFld (format 'YYYY-MM-DD')(CHAR (10)),
TimeFld,
TimeFld (format '99:99:99') (CHAR (8))as TimeFldF,
some_other_fields
FROM something
WHERE TS > DATE :sql_last_value
ORDER BY DateFld asc,TimeFld asc
答案 0 :(得分:0)
datefld
是DATE,timefld
是DECIMAL?
Cast(DateFld AS TIMESTAMP(0)) +
-- numeric -> string -> interval
Cast((TimeFld (FORMAT '99:99:99') (CHAR (8))) AS INTERVAL HOUR TO SECOND)