Конвертировать datetimeoffset в varchar в date / datetime - PullRequest
0 голосов
/ 29 января 2020

У меня есть Azure дБ, где у нас есть столбцы varchar с информацией о дате и времени в формате:

2019-11-04T16:25:15.000+0000

Я пытался преобразовать его в дату и время, используя cast(createddate as datetimeoffset), но я получаю ошибка;

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

Пробовал datetimeoffset(2) - (7), но возникает та же ошибка.

ОБНОВЛЕНИЕ: еще один запрос, есть ли способ отформатировать столбец varchar с использованием различных форматов даты и времени? У меня есть эти значения в столбце col1 2019-11-04T16: 25: 15.000 + 0000 2019-11-05T15: 17: 06 + 00: 00 CONVERT (datetimeoffset, REPLACE (созданная дата, '+', 0)) работает на 2019-11-04T16: 25: 15.000 + 0000 и CONVERT (datetimeoffset, createdate) работает на 2019-11-05T15: 17: 06 + 00: 00

Есть ли функция, которая может работать как для других форматов, так и для других?

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Если секция +0000 вашей строки должна представлять смещение часового пояса, она искажена, если речь идет о cast / datetimeoffset.

Она должна быть в формате + чч: мм - если я попробуйте кастинг 2019-11-04T16: 25: 15.000 + 00: 00, он отлично работает.

MS SQL ссылка здесь: https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql?view=sql-server-ver15

Обновление : включение комментариев SalmanA:

select 
    CAST('2019-11-04 16:25:15+09:00' AS datetimeoffset(7)) as [No T],
    CAST('2019-11-04T16:25:15+09:00' AS datetimeoffset(7)) as [With T]

возврат (в SQL 2016)

[No T]                               [With T]
2019-11-04 16:25:15.0000000 +09:00   2019-11-04 16:25:15.0000000 +09:00

, показывающий, присутствует T или нет, не имеет значения.

0 голосов
/ 29 января 2020

Вы можете использовать replace():

SELECT CONVERT(datetimeoffset, REPLACE(col, '+', 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...