如何在Teradata中将三个变量组合为一个日期(MM/DD/YYYY)



我在Teradata中有一个表,下面有3列,以及创建一个可以用来筛选表的日期。

Year Month Days
1   2,016   9   30
2   2,017   2   28
3   2,015   5   31

从上面的3列创建日期后,"日期"表应该是这样的。

Year Month Days  Date
1   2,016   9   30  9/30/2016
2   2,017   2   28  2/28/2017
3   2,015   5   31  5/31/2015

我试过TO_DATE、Cast的不同变体等,但都错了。

假设现有列为INT/SMALLINT/BYTEINT,则可以利用Teradata的"整数日期";表示:

CAST(("year"-1900)*10000 + "month"*100 + "days" AS DATE) as "date"

您可以将结果视为字符串并连接所有列,只需更改年份-

将来最好将日期和时间保存在适当的庄园中,因为您可以从中导出所有列,并且构建日期所需的时间更少

SELECT ('' || Days || '/' || Month  || '/' || CAST(oreplace(Year,',','') AS CHAR(4))  )
select cast(cast(year*10000+Month*100+Day as char(10)) as date format'YYYYMMDD')

最新更新