在Teradata中将日期作为字符串和整数进行比较

时间:2016-02-22 23:38:02

标签: sql teradata

我的任务是比较Teradata数据库中两个不同表中的日期。表group_1中的日期为BIGINT,例如20,141,106,表group_2中的日期为VARCHAR(30),例如,2015年12月11日。

进行转换并比较它们的最佳方法是什么,即 select * from .... group_1中的日期= group_2中的日期?

非常感谢提前。

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

下次尝试使用正确的数据类型或至少相同的错误类型存储数据: - )