2016-02-22 5 views
0

Моя задача - сравнивать даты в двух разных таблицах в базе данных Teradata. В таблице group_1 даны BIGINT, например 20,141,106, а в таблице group_2 - VARCHAR (30), например, 11/12/2015.Сравнение дат как строк и целых чисел в Teradata

Что было бы лучшим способом сделать конверсию и сравнить их, а именно, выбрать * from .... где дата в group_1 = дата в group_2?

Большое спасибо заранее.

ответ

0

Вам необходимо преобразовать типы дат для сопоставлений и других операций.

Для целого числа:

select to_date(convert(bigintcol as varchar(255)), 'YYYYMMDD') 

Для строки:

select to_date(varcharcol, 'MM/DD/YYYY') -- or perhaps DD/MM/YYYY 

Вы можете сравнить даты напрямую.

+0

Спасибо, человек. Я его уже реализую. Но когда я это сделаю, скажите to_date (8/12/2015, mm/dd/yyyy), я получаю 8/12/2015 00: 00: 00.00000. Любой способ обрезать его, чтобы получить только часть 8/12/2015? –

+0

Получил! cast (to_date (8/12/2015, mm/dd/yyyy) в качестве даты) делает это. Thanxxx. –

0

Можете ли вы безопасно преобразовать эти столбцы в даты (без недопустимых дат)?

BIGINT -> DATE: 
cast(col - 19000000 as date) 

VARCHAR -> DATE: 
to_date(col, 'dd/mm/yyyy') (or 'mm/dd/yyyy'?) 

В противном случае:

BIGINT -> VARCHAR: 
TRIM((col MOD 100) * 1000000 + (col/100 MOD 100) * 10000 + (col/10000) (FORMAT '99/99/9999')) -- dmy 
or 
TRIM((col/100 MOD 100) * 1000000 + (col MOD 100) * 10000 + (col/10000) (FORMAT '99/99/9999')) -- mdy 

И в следующий раз, попытайтесь хранить данные, используя правильный тип данных или, по меньшей мере, один и тот же неправильный тип :-)

+0

Да, это то, что происходит, когда вы играете со столами, сделанными другими :) Я сейчас его реализую, но когда я это делаю, скажите to_date (8/12/2015, mm/dd/yyyy), я получаю 8/12/2015 00: 00: 00,00000. Любой способ обрезать его, чтобы получить только часть 8/12/2015? –

+0

@DiegoMenezes: TO_DATE возвращает DATE, каков ваш выпуск TD и какой клиент вы используете? – dnoeth

+0

Получил! cast (to_date (8/12/2015, mm/dd/yyyy) в качестве даты) делает это. Thanxxx. –

Смежные вопросы