如何在 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;
在我的数据库中,我有类似 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;