首页 > 解决方案 > 日期和时间的时间戳

问题描述

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

标签: timestamplogstashteradata

解决方案


datefld是日期timefld还是十进制?

Cast(DateFld AS TIMESTAMP(0)) +
-- numeric -> string -> interval
Cast((TimeFld (FORMAT '99:99:99') (CHAR (8))) AS INTERVAL HOUR TO SECOND)

推荐阅读