SQL CASE, если дата была введена как ГГГГ-ДД-ММ для преобразования ее в ГГГГ-ММ-ДД - PullRequest
0 голосов
/ 16 ноября 2018

Привет, я пытаюсь решить проблему, потому что я получаю

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

Итак, я обнаружил, что это потому, что дата была похожа на эту '2018-22-10' и формат, который у меня естьэто ГГГГ-ММ-ДД, поэтому я пытался создать случай для этого случая, я нашел этот код, который может помочь

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 есть информация о дате, хранящаяся

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать 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
...