Entity SQL сравнивает дату и время без миллисекунд
Я пытаюсь получить некоторые записи из базы данных MSSQL, используя EntityObject с запросом EntitySQL. Поле, которое я использую для фильтрации, является типом даты и времени. Сгенерированный запрос, проецируемый без миллисекунды, на SQL Server ничего не возвращает. Когда я добавляю миллисекунды, я получаю результаты.
Как я могу использовать EntitySQL, чтобы получить результат без миллисекунд?
Благодарю.
3 ответа
Это не элегантно, но это сработало для меня:
foos.SingleOrDefault(f => f.EntryDate.Year == bar.EntryDate.Year &&
f.EntryDate.Month == bar.EntryDate.Month &&
f.EntryDate.Day == bar.EntryDate.Day &&
f.EntryDate.Hour == bar.EntryDate.Hour &&
f.EntryDate.Minute == bar.EntryDate.Minute &&
f.EntryDate.Second == bar.EntryDate.Second);
Один из способов сделать это - создать представление ваших данных, где ваш столбец datetime преобразуется в smalldatetime (который не имеет миллисекунд).
Затем добавьте представление в модель вашей сущности и прочитайте данные через представление.
Надеюсь это поможет
Шираз
Обходной путь, который я нашел, заключается в начальной дате сохранения выборки как.ToBinary(), а затем при фильтрации просто создайте новый DateTime(binaryValue) и сравните с ним.