Удалить смещение из datetimeoffset

#sql-server #datetime #datetimeoffset

#sql-сервер #datetime #datetimeoffset

Вопрос:

У меня есть datetimeoffset 18.03.2019 11:46: 10 утра -04:00 Мне нужно преобразовать его в 18.03.2019 11: 46: 10 утра, мне не нужно применять смещение. За неимением лучших слов мне просто нужно удалить последние 7 символов.

Комментарии:

1. Приведение (yourDateTimeOffsetColumn как datetime)

Ответ №1:

Преобразуйте его в datetime2(0) :

 SELECT CONVERT(datetime2(0),YourDatetimeOffsetColumn) AS Datetime2Column
FROM...
  

db<> скрипта

Комментарии:

1. Обратите внимание, что преобразование с использованием явного (0) приведет к удалению любой потенциальной точности, которая хранится в серверной части. Это преобразование из DATETIMEOFFSET в DATETIME2 , которое удаляет часовой пояс.

2. Это приводит к значению, выходящему за пределы диапазона

3. Тогда ваши исходные данные не являются datetimeoffset , @MaxTaylor-Hayden . Эта ошибка никогда не может возникнуть при преобразовании из a datetimeoffset в a datetime2 .

4. Скорее всего, @MaxTaylor-Hayden, вы сохраняете значения даты и времени в varchar ; что-то, что всегда является плохим выбором дизайна.

Ответ №2:

Для mssql:

ВЫБЕРИТЕ ПРИВЕДЕНИЕ (Your_Column КАК DATETIME) Из Your_Table

Комментарии:

1. Но этот вопрос помечен для Microsoft SQL Server, поэтому это не отвечает на заданную проблему.

2. Извините за путаницу, mssql — это Microsoft SQL Server. Недавно у меня была такая же проблема, и это решило ее для меня