如何在Teradata的int字段中处理存储为字符串的日期?

时间:2018-03-08 20:58:29

标签: sql teradata

我在Teradata中有一个表,它以8种字符的INT字段存储日期,格式如下" YYYYMMDD"所以今天它会存储" 20180308" 。如果我尝试将它作为这样的日期:

CAST(date_field AS DATE FORMAT 'YYYY-MM-DD')

它将日期转换为3450年的某个未来日期。

我认为这个数据不能存储为日期对象是一个错误。反正有没有克服这个故障?不幸的是,我无法改变这一点。

由于

2 个答案:

答案 0 :(得分:3)

它不是一个8 字符整数,它是一个8 数字整数。

Teradata使用

存储日期
(year - 1900) * 10000
+ (month * 100)
+ day

今天结果为118030820180308将返回3918-03-08

将其投射到您需要使用的日期

cast(intdate-19000000 as date)

答案 1 :(得分:0)

选择演员表('20180308'作为日期格式'yyyymmdd');