Datetime 如何在Teradata中将字符串转换为“mm/dd/yyyy”格式?
在我的数据库中,我有10192013 mmddyyyy和152015 mmddyyyy这样的字符串。我希望将转换为日期/时间格式“mm/dd/yyyy” 我将如何实现这一点 我尝试将日期字符串转换为日期格式“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函数可能会起作用。您不需要将数字转换为字符串,然后转换为日期,只需根据内部日期
提前感谢。如果您使用的是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”获取字符串,而无需检查正确的日期。