Я знаю, что это старый вопрос, но, если вы хотите преобразовать DateTimeOffset в DateTime, я думаю, что вам нужно учитывать часовой пояс сервера, на котором вы конвертируете.Если вы просто выполните CONVERT (datetime, @MyDate, 1), вы просто потеряете часовой пояс, что, вероятно, приведет к неправильному преобразованию.
Я думаю, что сначала вам нужно переключить смещение значения DateTimeOffset,затем выполните преобразование.
DECLARE @MyDate DATETIMEOFFSET = '2013-11-21 00:00:00.0000000 -00:00';
SELECT CONVERT(DATETIME, SWITCHOFFSET(@MyDate, DATEPART(tz,SYSDATETIMEOFFSET())));
Результатом преобразования '2013-11-21 00: 00: 00.0000000 -00: 00' в DateTime на сервере со смещением -7: 00 будет 2013-11-20 17: 00: 00.000.С помощью приведенной выше логики не имеет значения, какой часовой пояс сервера или смещение значения DateTime, он будет преобразован в DateTime в часовом поясе сервера.
Я полагаю, вам нужно сделать это, потому чтозначение DateTime включает предположение, что это значение находится в часовом поясе сервера.