我的任务是比较Teradata数据库中两个不同表中的日期。表group_1中的日期为BIGINT,例如20,141,106,表group_2中的日期为VARCHAR(30),例如,2015年12月11日。
进行转换并比较它们的最佳方法是什么,即 select * from .... group_1中的日期= group_2中的日期?
非常感谢提前。
答案 0 :(得分:0)
您应该将日期类型转换为日期以进行比较和其他操作。
对于整数:
select to_date(convert(bigintcol as varchar(255)), 'YYYYMMDD')
对于字符串:
select to_date(varcharcol, 'MM/DD/YYYY') -- or perhaps DD/MM/YYYY
然后,您可以直接比较日期。
答案 1 :(得分: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
下次尝试使用正确的数据类型或至少相同的错误类型存储数据: - )