Как обрабатывать нулевые временные метки с помощью объединения в Teradata - PullRequest
0 голосов
/ 06 мая 2019

У меня есть три столбца с типом данных TIMESTAMP (6), и я хочу выяснить минимум из трех временных отметок.В любой момент времени среди этих трех столбцов будет хотя бы одна ненулевая точка данных.

Я пытался найти альтернативу в Интернете, но не смог найти ничего, связанного со сравнением временных меток по этому вопросу.Существует решение использования coalesce, которое работает с датой типа данных, но не с отметками времени.

1 Ответ

0 голосов
/ 06 мая 2019

Полагаю, вы спрашиваете о попытке использовать LEAST с метками времени?Я не знаю, почему Teradata ничего не сделала с этим.Для отметок времени я просто использовал их как varchar.Нули делают это уродливее, потому что вы должны объединить их с чем-то, в зависимости от того, хотите ли вы, чтобы ноль был меньше, чем все остальное или нет.

select
least (
coalesce(null,'9999-12-31'),        --if you want nulls to not be the least
cast(current_timestamp as varchar(32)),
cast(timestamp '2018-01-01 05:00:00' as varchar(32)))

В реальном запросе вы в конечном итоге объедините объединениеи приведение для каждого столбца, который вы хотите передать в наименьшую функцию.

РЕДАКТИРОВАТЬ: я, вероятно, должен добавить, что это работает на даты ГГГГ-ММ-ДД, другие форматы могут сортироваться неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...