2016-11-15 5 views
0

Я пытаюсь выбрать данные из таблицы, которая имеет диапазон дат Его немного грязный, как его передается от JAVA как целое число вида 20160101 (ГГГГММДД)Teradata Преобразование целого числа в метку времени

Так в основном я хочу, чтобы иметь возможность выполнить запрос, как (кстати, это тип штампа времени, который работает в запросе)

SELECT * FROM TABLE_A as t 
WHERE t_timestamp >='2016-10-01 00:00:00' 

Я посмотрел вокруг на Google и SO и придумал что-то вроде этого

SELECT CAST(20161001 AS DATE FORMAT 'YYYY-MM-DD') || ' 00:00:00' 

Это попытка конвертировать целое число в метку времени, которая будет приемлема в качестве диапазона дат. Это не работает. Нет ошибки, только это приводит к тому, что когда я статически добавляю отметку времени, существует, когда я пытаюсь сделать ее общей, не существует

Может ли кто-нибудь помочь?

ответ

1

Если вы хотите иметь значение символа ниже, запрос должен работать sel (CAST ('20161001' AS DATE FORMAT 'yyyymmdd') (формат 'yyyy-mm-dd') (char (10))) || '00:00:00'

Ниже запроса преобразует значение временной метки (0)

sel cast((CAST('20161001' AS DATE FORMAT 'yyyymmdd')(format 'yyyy-mm-dd')(char(10)))|| ' 00:00:00' as timestamp(0)) 
+0

большое спасибо :) –

1

ли вы смотреть на результат SELECT CAST(20161001 AS DATE FORMAT 'YYYY-MM-DD')? Она возвращает '3916-10-01', и вы, вероятно, не имеют данные, такие как tghat :-)

Нанести напечатанный в строку, а затем бросил на дату:

WHERE t_timestamp >= Cast(Trim(20161001) AS DATE Format 'YYYYMMDD') 
Смежные вопросы