查询返回错误:
DECLARE @x VARCHAR(200);
--SELECT @x = '13/12/2019 16:01:47'
SELECT @x = '-'
select CASE WHEN ISDATE(@x)=1 THEN CONVERT(datetime, @x) else case when @x='-' then '-' else CONVERT(CHAR(10),CONVERT(DATETIME,LEFT(@x,10),105),101) END END;
如果我运行此查询,它可以正常工作:
DECLARE @x VARCHAR(200);
SELECT @x = '13/12/2019 16:01:47'
--SELECT @x = '-'
select CASE WHEN ISDATE(@x)=1 THEN CONVERT(datetime, @x) else case when @x='-' then '-' else CONVERT(CHAR(10),CONVERT(DATETIME,LEFT(@x,10),105),101) END END;
也尝试了此查询:
SELECT case when @x = '-' then '-'
WHEN ISDATE(@x)=1 THEN CONVERT(datetime, @x)
else CONVERT(CHAR(10),CONVERT(DATETIME,LEFT(@x,10),105),101)
END
我不明白如何处理case语句中的“-”。我觉得一切都很好。我需要检查一下案件陈述中的情况。
1条答案
按热度按时间q9yhzks01#
使用
TRY_CONVERT()
:我不认为转换回字符串有什么好处。