如何在 Teradata 中将字符串转换为 'mm/dd/yyyy' 格式?

How to convert strings to a 'mm/dd/yyyy' format in Teradata?

在我的数据库中,我有类似 10192013 (mmddyyyy) 和 152015 (mmddyyyy) 的字符串。我希望将 转换为 date/time 格式 'mm/dd/yyyy'。

我该如何实现?

我尝试了 CAST (--date strings-- AS DATE FORMAT 'MM/DD/YYYY') 但没有成功。

提前致谢。

如果您使用的是 Teradata SQL 助手,那么您可能受困于一种格式。您可以通过进入 Tools>Options>Data Format.

来更改它。如果您使用的是 BTEQ,那么也许 CAST 功能应该可以工作。

您不需要将数字转换为字符串再转换为日期,只需根据内部日期格式进行计算即可:

CAST((cnst_birth_yr_num - 1900) * 10000 
     + cnst_birth_mth_num * 100
     + cnst_birth_dy_num AS DATE)

这导致一个日期,字符串表示通常在客户端完成,否则利用TO_DATE加上格式:

TO_CHAR(CAST((cnst_birth_yr_num - 1900) * 10000 
             + cnst_birth_mth_num * 100
             + cnst_birth_dy_num AS DATE),  'mm/dd/yyyy')

虽然 Dnoeth 方法是最好的..但试试这个...

select 
case when length(test)=8
 then
    cast((cast(substr(test,5)||'-'||substr(test,1,2)||'-'||substr(test,3,2)  as varchar(10)) )
    as date format 'YYYY-MM-DD')
    when length(test )=6
    then
    cast(substr(test,3)||'-'||'0'||substr(test ,1,1)||'-0'||substr(test,2,1) as date format 'YYYY-MM-DD')
end as dateformat
from test1;