EF Core 7 Преобразование таблицы UTC в местный часовой поясC#

Место общения программистов C#
Ответить
Anonymous
 EF Core 7 Преобразование таблицы UTC в местный часовой пояс

Сообщение Anonymous »


С помощью SQL я могу сделать что-то подобное

ВЫБРАТЬ * ОТ [T1].[dbo].[Заказы] ГДЕ CONVERT (ДАТА, OrderDate В ЧАСОВОМ ПОЯСЕ «UTC» В ЧАСОВОМ ПОЯСЕ «Австралийское восточное время») МЕЖДУ «06.12.2023» И «07.12.2023» ПОРЯДОК ПО OrderId DESC; Записи отображаются так, как и ожидалось,
однако я хочу добиться того же с помощью EF Core без необходимости использовать Enumerable или ToList.

query = query.Where(order => EF.Functions.DateDiffDay( TimeZoneInfo.ConvertTimeFromUtc(order.OrderDate, TimeZoneInfo.Utc), TimeZoneInfo.ConvertTimeFromUtc(startDateTime, TimeZoneInfo.Local) ) >= 0 && EF.Functions.DateDiffDay( TimeZoneInfo.ConvertTimeFromUtc(endDateTime, TimeZoneInfo.Local), TimeZoneInfo.ConvertTimeFromUtc(order.OrderDate, TimeZoneInfo.Utc) ) >= 0); Похоже, я неправильно понял, как правильно преобразовать часовой пояс, судя по следующей ошибке
System.InvalidOperationException: возникло исключение при попытке оценить выражение параметра запроса LINQ. Дополнительную информацию см. во внутреннем исключении. Чтобы отобразить дополнительную информацию, вызовите DbContextOptionsBuilder.EnableSensitiveDataLogging. ---> System.ArgumentException: преобразование не удалось завершить, поскольку для предоставленного DateTime не было правильно установлено свойство Kind. Например, если свойство Kind имеет значение DateTimeKind.Local, исходный часовой пояс должен быть TimeZoneInfo.Local. (Параметр «sourceTimeZone»)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»