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
嗨,我正在尝试解决一个问题,因为我得到了
'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