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

时间:2015-10-09 13:33:19

标签: datetime teradata

在我的DB中,我的字符串如10192013(mmddyyyy)和152015(mmddyyyy)。我希望将其转换为日期/时间格式'mm / dd / yyyy'。

我将如何实现这一目标?

我尝试了CAST( - 日期字符串 - 日期格式'MM / DD / YYYY'),但这没有用。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您不需要将数字转换为字符串,然后转换为日期,只需根据内部日期格式计算:

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

这导致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')

答案 1 :(得分:0)

如果您使用的是Teradata SQL助手,那么您可能会遇到一种格式。你可以进入Tools>Options>Data Format来改变它。

如果你正在使用BTEQ,那么CAST函数可能会起作用。

答案 2 :(得分:0)

虽然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;