SQL CASE 如果日期被引入为 YYYY-DD-MM 将其转换为 YYYY-MM-DD

SQL CASE if date was introduced as YYYY-DD-MM to convert it as YYYY-MM-DD

嗨,我正在尝试解决一个问题,因为我得到了

'Conversion failed when converting date and/or time from character string.'

然后我发现这是因为日期是这样的 '2018-22-10' 而我的格式是 YYYY-MM-DD 所以我试图为这种情况做一个案例,我找到了可能有帮助的代码

WHEN SUBSTRING([DateAchat],6, 2) > 12 THEN ([DateAchat], '%Y-%m-%d')                        .strftime("%Y-%m-%d")


to_date(T1.[DateAchat],'YYYYMMDD');


FORMAT T1.[DateAchat](getdate(), 'yyyy/MM/dd ')

在 DateAchat 中是否存储了日期信息

您可以使用 SET DATEFORMAT 结合 TRY_CONVERT 功能

DECLARE @t TABLE (d1 nvarchar(10));
INSERT INTO @t VALUES ('2018-22-10'), ('2018-10-22'), ('2018-10-10');
SET DATEFORMAT ydm
SELECT d2
FROM (SELECT COALESCE(try_convert(datetime, d1, 120), try_convert(datetime, d1)) AS d2
      FROM @t) t1 
WHERE d2 IS NOT NULL

结果

d2
-----------------------
2018-10-22 00:00:00.000
2018-10-22 00:00:00.000
2018-10-10 00:00:00.000