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) и сравните с ним.

Другие вопросы по тегам