Преобразование 2013-02-04T10:30:23+00:00 в дату и время с помощью T-SQL (2005)

Привет, я застрял в преобразовании строк UTC DateTime "2013-02-04T10:30:23+00:00" в формат даты и времени Sql 2005. Я попытался convert(datetime,'2013-02-04T10:30:23+00:00',101), но выдает ошибку "Ошибка преобразования при преобразовании даты и времени из символьной строки.

Однако это работает convert(datetime,'2013-02-04 10:30:23',101).

Есть ли обходной путь для convert(datetime,'2013-02-04T10:30:23+00:00',101)?

Заранее спасибо.


person Mehboob    schedule 14.02.2013    source источник


Ответы (1)


Вы можете сделать это следующим образом:

DECLARE @s VARCHAR(100) = '2013-02-04T10:30:23+00:00'
SELECT  CONVERT(DATETIME, LEFT(@s, 10) + ' ' + SUBSTRING(@s, 12, 8), 101)

Это позволит извлечь необходимые части строки, объединить их в новую строку, а затем использовать CONVERT для получения DATETIME.

person Ivan G    schedule 14.02.2013
comment
Благодарю вас! но я искал решение без изменения строк, так как оно будет потреблять больше ресурсов, в то время как у меня есть тысячи записей для обработки. - person Mehboob; 14.02.2013
comment
Да, это правда, если бы вы использовали SQL Server 2008, у вас мог бы быть CAST(CONVERT(DATETIMEOFFSET, @s, 207) AS DATETIME), но в SQL Server 2005 нет типа данных DATETIMEOFFSET. - person Ivan G; 14.02.2013
comment
Если возникнут проблемы с производительностью, вы можете создать вычисляемый столбец предложенного выше определения, вам также придется создать его с параметром PERSISTED. - person Ivan G; 14.02.2013