Преобразование не удалось при преобразовании даты и времени - PullRequest
3 голосов
/ 22 ноября 2011

Это мой первый пост, поэтому заранее просим прощения за любые ошибки.

Я пытаюсь преобразовать символьную строку в формат даты. Моя строка имеет формат «20110709_000000».

Я пробовал следующие запросы после исследования, но оба возвращают мне следующую ошибку: 'Преобразование не удалось при преобразовании даты и времени из символьной строки.'

Я пытался

Select CAST(REPLACE('20110709_000000','_', '') AS DATETIME)

и

SELECT CONVERT(DATETIME,REPLACE('20110709_000000','_', ''),109).

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Предполагая, что 000000 равно hhmiss, вы можете использовать подстроку , чтобы получить детали и построить строку в формате yyyymmdd hhmiss, который можно преобразовать в datetime.

declare @ds varchar(15) = '20110709_102030'

select cast(substring(@ds,  1, 8)+' '+
            substring(@ds, 10, 2)+':'+       
            substring(@ds, 12, 2)+':'+
            substring(@ds, 14, 2) as datetime)

Результат:

-----------------------
2011-07-09 10:20:30.000
1 голос
/ 22 ноября 2011

Вам нужен 000000 в конце? Это должно работать:

Select CAST(REPLACE('20110709_000000','_000000', '') AS DATETIME)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...