#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...
Комментарии:
1. Обратите внимание, что преобразование с использованием явного
(0)
приведет к удалению любой потенциальной точности, которая хранится в серверной части. Это преобразование изDATETIMEOFFSET
вDATETIME2
, которое удаляет часовой пояс.2. Это приводит к значению, выходящему за пределы диапазона
3. Тогда ваши исходные данные не являются
datetimeoffset
, @MaxTaylor-Hayden . Эта ошибка никогда не может возникнуть при преобразовании из adatetimeoffset
в adatetime2
.4. Скорее всего, @MaxTaylor-Hayden, вы сохраняете значения даты и времени в
varchar
; что-то, что всегда является плохим выбором дизайна.
Ответ №2:
Для mssql:
ВЫБЕРИТЕ ПРИВЕДЕНИЕ (Your_Column КАК DATETIME) Из Your_Table
Комментарии:
1. Но этот вопрос помечен для Microsoft SQL Server, поэтому это не отвечает на заданную проблему.
2. Извините за путаницу, mssql — это Microsoft SQL Server. Недавно у меня была такая же проблема, и это решило ее для меня