Я хочу, чтобы дата с типом данных varchar(255), как показано ниже, была преобразована в формат datetime или date

05 jun 2007  

Когда я использую приведение с datetime или date:

UPDATE [dbo].[SSIS_TempDump_Episode_Numbers] 
SET DischargeDate = CAST([Discharge date] as Date)

Я получаю такую ​​ошибку:

Сообщение 241, Уровень 16, Состояние 1, Строка 1
Ошибка преобразования при преобразовании даты и / или времени из строки символов.

Или изменить столбец дает тот же результат. это из-за формата даты?

0
SoupOfStars 27 Мар 2014 в 16:17
Является ли ваш [Discharge date] типом varchar, который представляет дату в формате 05 jun 2007?
 – 
Hamlet Hakobyan
27 Мар 2014 в 16:21
4
Он отлично работает с тем значением, которое у вас есть. скрипт SQL. Возможно, есть и другие строки, формат которых отличается от ожидаемого.
 – 
Mikael Eriksson
27 Мар 2014 в 16:25
Yes [Дата выпуска] — это varchar(255), представляющий формат 05 июня 2007 г.
 – 
SoupOfStars
27 Мар 2014 в 16:40
См. комментарий Микаэля Эрикссона.
 – 
Hamlet Hakobyan
27 Мар 2014 в 16:42
Да, вы правы, я нашел мошенническую запись
 – 
SoupOfStars
27 Мар 2014 в 16:51

2 ответа

Лучший ответ
Select CONVERT(datetime,'05 jun 2007') -->'2007-06-05 00:00:00.000'
0
huMpty duMpty 27 Мар 2014 в 16:28
DECLARE @foo VARCHAR(255)

SET @foo = '05 jun 2007'

PRINT CONVERT(DATETIME,@foo)
0
Bobby 27 Мар 2014 в 16:24