Почему преобразование даты из nvarchar (max) в date приводит к ошибке? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть дата в этом формате

21-02-2018 

с использованием nvarchar(MAX)

Я пытаюсь преобразовать в дату с использованием

  select (Convert(Date, , 106)) from Certificates

  select (Convert(Date, IssueDate))

, но это не удаетсяпреобразовать.

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

Используйте try_convert(). Тем не менее, я думаю, вы хотите формат 105 (дд-мм-гггг), а не 106 (дд монгггг):

select try_convert(date, issuedate, 105)

Это вернет NULL вместо сбоя, если формат не совпадает. Вы можете найти эти значения:

select issuedate
from certificates
where try_convert(date, issuedate, 105) is null and
      issuedate is not null;
0 голосов
/ 01 июля 2019

Обычно это формат, в котором сервер ожидает ввода даты. Я считаю, что по умолчанию используется месяц-день-год (американский), а не день-месяц-год (британский)

Попробуйте поставить SET DATEFORMAT DMY в начале вашего кода, чтобы намекнуть, что первая часть строки - День, а не месяц.

...