Преобразование даты в Datetime дает ошибку в SQL - PullRequest
0 голосов
/ 30 мая 2019

Я сохраняю дату в столбце varchar(50) со значениями типа thie:

1/01/2018

Я хочу преобразовать их в значение Datetime, например: 2018-01-22 00:00:00.0000000

My SQLэто как;

select 
  [Site],
  CONVERT(VARCHAR(50), CAST([InvDay] AS DATETIME), 101) as Date,
from tableA;

Но я получаю;

Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона.

Я тоже так пытался, но с той же ошибкой;

CONVERT(datetime, [InvDay]) as  Date,

Как я могу заставить эту работу работать?

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я думаю, что вы хотите использовать set dateformat dmy.Вот пример:

declare @d varchar(15) 
set @d='13/1/2018'
set dateformat dmy
select convert(datetime,@d)
0 голосов
/ 30 мая 2019

Посмотрите на значения, которые нельзя преобразовать:

select invday
from tableA
where try_cast(invday as date) is null and invday is not null;

Также неясно, является ли ваш формат мм / дд / гггг или дд / мм / гггг. Вы можете указать формат используя convert():

-- mm/dd/yyyy
select invday
from tableA
where try_convert(date, invday, 101) is null and
      invday is not null;


-- dd/mm/yyyy
select invday
from tableA
where try_convert(date, invday, 103) is null and
      invday is not null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...