Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Дата в формате ISO 8601 с часовым поясом. Ошибка преобразования.  [new]
Диам
Member

Откуда:
Сообщений: 1489
Здравствуйте.
Получаю в качестве аргумента текстовую строку с датой в формате ISO 8601 с часовым поясом вида 2011-08-17T15:00:05+04:00
При попытке приведения её к типу DateTime получаю ошибку
"Ошибка преобразования даты или времени из символьной строки."
declare @d datetime
SET @d=convert(datetime, '2011-08-17T15:00:05+04:00',127)


Если пытаться преобразовать это же время но без часового пояса, то все проходит нормально.

В чем может быть проблема?
---------------------------------
http://ag-vba.ucoz.ru/ - сервис распознавания капчи теперь и для VBA!!!
26 ноя 13, 01:58    [15188786]     Ответить | Цитировать Сообщить модератору
 Re: Дата в формате ISO 8601 с часовым поясом. Ошибка преобразования.  [new]
qwerty112
Guest
Диам
В чем может быть проблема?

в том, что с точки зрения типа datetime - эта строка '2011-08-17T15:00:05+04:00' - не дата/время

---
какой сервер ? с 2008-го есть datetimeoffset
26 ноя 13, 02:25    [15188828]     Ответить | Цитировать Сообщить модератору
 Re: Дата в формате ISO 8601 с часовым поясом. Ошибка преобразования.  [new]
Диам
Member

Откуда:
Сообщений: 1489
qwerty112,
сервер 2008R2
В справке по convert приводится формат 127, в котором как раз участвует часовой пояс.

Спасибо за наводку, разобрался, для преобразования пришлось использовать тип datetime2(0)

Вот так вполне себе работает:
declare @d datetime-- datetimeoffset(0)
SET @d=cast('2006-12-12T23:45:12-08:00' as datetime2(0))
26 ноя 13, 02:41    [15188858]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить