Я пытаюсь проверить даты, но после выполнения приведенного ниже запроса результат не отображается. Может ли кто-нибудь порекомендовать мне правильный синтаксис?

SELECT TOP 10 * FROM MY_DATABASE.AGREEMENT
WHERE end_dt=12/31/9999
0
Nidhin_toms 20 Авг 2014 в 22:12

3 ответа

Лучший ответ

31/12/9999 может показаться вам датой, но для базы данных это расчет:

12, разделенное на 31, разделенное на 9999 , и поскольку здесь используется деление на ЦЕЛОЕ, получается ЦЕЛОЕ 0

Итак, наконец, вы сравниваете DATE с INT, и это приводит к приведению типа DATE к INT.

Единственный надежный способ записать литерал даты в Teradata - это DATE , за которым следует строка в формате ГГГГ-ММ-ДД :

ДАТА "9999-12-31"

Аналогично для TIME '12: 34: 56,1 ' и TIMESTAMP' 2014-08-20 12: 34: 56,1 '

3
dnoeth 20 Авг 2014 в 20:04

Вопрос, который вы задаете, не очень ясен. Указанная вами дата зависит от языка. Пытаться SELECT TOP 10 * FROM MY_DATABASE.AGREEMENT WHERE end_dt='99991231'

0
TonT 20 Авг 2014 в 19:15

Это столбец даты? Тогда попробуйте where end_dt = '9999-12-31'.

1
Andrew 20 Авг 2014 в 19:15