Есть ли способ сравнить две DateTime
переменные, Linq2Sql
но игнорировать часть времени.
Приложение сохраняет элементы в БД и добавляет опубликованную дату. Я хочу сохранить точное время, но все же смогу потянуть на саму дату.
Я хочу сравнить 12/3/89 12:43:34
и 12/3/89 11:22:12
не учитывать фактическое время суток, поэтому оба они считаются одинаковыми.
Я полагаю, что я могу установить все время суток 00:00:00
перед сравнением, но я действительно хочу знать время суток, я просто хочу иметь возможность сравнивать только по дате.
Я нашел код, который имеет ту же проблему, и они сравнивают год, месяц и день отдельно. Есть лучший способ сделать это?
Для истинного сравнения вы можете использовать:
источник
-1
,0
и1
, действительно? Это просто магические числа, представляющие «меньше», «равно» и «больше». И потом вам придется «сравнивать» полученное целое с чем-то, потому что есть три возможных значения. Я должен согласиться с @David, что это гораздо более естественно использоватьdateTime1.Date < dateTime1.Date
, и аналогично<=
,>
и>=
в большинстве приложений.Вот как я это делаю, чтобы работать с LINQ.
Если вы используете
dtOne.Date == dtTwo.Date
его только, он не будет работать с LINQ (Ошибка: указанный член типа «Дата» не поддерживается в LINQ to Entities)источник
EntityFunctions
не менее, устарела в .NET 4.5.2. Используйте вместо этого:DbFunctions.TruncateTime
. Похоже, это идентичный метод, только что перенесенный.Если вы используете Entity Framework <v6.0, то используйте
EntityFunctions.TruncateTime
Если вы используете Entity Framework> = v6.0, тогда используйтеDbFunctions.TruncateTime
Используйте любой (в зависимости от вашей версии EF) вокруг любого
DateTime
свойства класса, которое вы хотите использовать в вашем запросе Linqпример
источник
источник
Вы можете использовать это, если вы используете пустые поля даты.
источник
источник
Значение diff представляет количество дней для возраста. Если значение отрицательное, дата начала падает после даты окончания. Это хорошая проверка.
источник
Вы можете использовать Equals или CompareTo .
Равно : Возвращает значение, указывающее, имеют ли два экземпляра DateTime одинаковые значения даты и времени.
CompareTo Возвращаемое значение :
DateTime обнуляется:
или
DateTime не обнуляется:
или
источник
В предложении join или where используйте
Date
свойство столбца. За кулисами это выполняетCONVERT(DATE, <expression>)
операцию. Это должно позволить вам сравнивать даты без времени.источник
Можешь попробовать
источник
источник