在我的DB中,我的字符串如10192013(mmddyyyy)和152015(mmddyyyy)。我希望将其转换为日期/时间格式'mm / dd / yyyy'。
我将如何实现这一目标?
我尝试了CAST( - 日期字符串 - 日期格式'MM / DD / YYYY'),但这没有用。
提前致谢。
答案 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;