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

Datetime 如何在Teradata中将字符串转换为“mm/dd/yyyy”格式?,datetime,teradata,Datetime,Teradata,在我的数据库中,我有10192013 mmddyyyy和152015 mmddyyyy这样的字符串。我希望将转换为日期/时间格式“mm/dd/yyyy” 我将如何实现这一点 我尝试将日期字符串转换为日期格式“MM/DD/YYYY”,但没有成功 提前感谢。如果您使用的是Teradata SQL assistant,那么您可能只能使用一种格式。您可以通过进入工具>选项>数据格式来更改它。如果您使用的是BTEQ,那么CAST函数可能会起作用。您不需要将数字转换为字符串,然后转换为日期,只需根据内部日期

在我的数据库中,我有10192013 mmddyyyy和152015 mmddyyyy这样的字符串。我希望将转换为日期/时间格式“mm/dd/yyyy”

我将如何实现这一点

我尝试将日期字符串转换为日期格式“MM/DD/YYYY”,但没有成功


提前感谢。

如果您使用的是Teradata SQL assistant,那么您可能只能使用一种格式。您可以通过进入工具>选项>数据格式来更改它。如果您使用的是BTEQ,那么CAST函数可能会起作用。

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

CAST((cnst_birth_yr_num - 1900) * 10000 
     + cnst_birth_mth_num * 100
     + cnst_birth_dy_num AS DATE)
这会产生一个日期,字符串表示通常在客户机中完成,否则会使用以下格式来表示日期:

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

虽然第二种方法是最好的…但是试试这个

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;

这很有帮助。但如果我尝试选择前100名作为日期,则arc_mdm_tbls.cnst_birth_num+cnst_birth_mth_num+cnst_birth_dy_num中的“mm/dd/yyyyy”表示提供的日期无效。为什么会这样?@StruglingCoder:您的查询没有进行所需的计算。如果我的查询失败,表明数据不正确,则可以使用cnst_birth_mth_num格式“99/”| cnst_birth_dy_num格式“99/”| cnst_birth_yr_num格式“9999”获取字符串,而无需检查正确的日期。