Как написать запрос для преобразования nvarchar на дату - PullRequest
0 голосов
/ 30 мая 2020

У меня есть таблица с одним столбцом, содержащим дату и строковые значения. Как написать запрос для преобразования строки в значение даты?

Таблица usercomment:

comment
----------
02/22/2020
03/22/2020
Nochange
04/22/2020
userreviw

Желаемый результат:

comment
-----------
2020-02-22
2020-03-22
Nochange
2020-04-22
userreviw

Ответы [ 2 ]

4 голосов
/ 30 мая 2020

Попробуйте использовать TRY_CONVERT:

SELECT
    COALESCE(TRY_CONVERT(varchar(10),
                         TRY_CONVERT(datetime, col, 101),
                         120), col) AS col_as_date
FROM yourTable;

Маска формата 101 при первом вызове TRY_CONVERT соответствует формату даты mm/dd/yyyy, который соответствует вашим данным, если у него действительная дата . Для недопустимых значений, таких как comment, TRY_CONVERT вернет NULL. Затем мы вызываем TRY_CONVERT с маской 120 для генерации текстовых дат в формате yyyy-mm-dd.

1 голос
/ 30 мая 2020
Select CASE 
         ISDATE(myColumn) WHEN 1 THEN CONVERT(nvarchar(10), CONVERT(datetime, myColumn, 101), 120)
         ELSE myColumn 
       end
From myTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...