Отметка времени от даты и времени - PullRequest
0 голосов
/ 05 июня 2018

Мне нужно получить некоторые данные из базы данных Teradata с помощью logstash.Чтобы получить только самые новые данные, я хочу использовать 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 голосов
/ 05 июня 2018

datefld - ДАТА, а timefld - ДЕСЯТИЧНЫЙ?

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