日期和时间的时间戳

时间:2018-06-05 12:15:37

标签: timestamp logstash teradata

我需要使用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

1 个答案:

答案 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)