我使用以下代码将日期从varchar转换为可接受的日期格式。
create view v1 as
Select name,time,
CAST(CAST(SUBSTRING( [ENTDATE],1,2)+
SUBSTRING( [ENTDATE],3,2)+ --month
SUBSTRING( [ENTDATE],5,2) --day
AS VARCHAR(10))
AS DATE) as ENTDATE)
from table1
目前日期显示为990415.
有超过100000条记录。该日期约有10条记录不干净,长度小于6.例如:7912。
这些记录导致转换失败错误。转换时有什么方法可以处理这10条记录吗?
答案 0 :(得分:0)
如果您确定记录有8个或6个位置,则可以在查询中使用nullif
。
create view v1 as
Select name,time,
CAST(CAST(SUBSTRING( [ENTDATE],1,2)+
SUBSTRING( [ENTDATE],3,2)+ --month
nullif(SUBSTRING( [ENTDATE],5,2), '') --day
AS VARCHAR(10))
AS DATE) as ENTDATE)
from table1
当记录有6个位置时,这将返回NULL。