Existe-t-il un moyen de comparer deux DateTime
variables Linq2Sql
mais de ne pas tenir compte de la partie Time.
L'application stocke des éléments dans la base de données et ajoute une date de publication. Je veux garder l'heure exacte mais toujours pouvoir tirer par la date elle-même.
Je veux comparer 12/3/89 12:43:34
et 12/3/89 11:22:12
et ne pas tenir compte de l'heure réelle de la journée, donc les deux sont considérés comme identiques.
Je suppose que je peux régler toutes les heures de la journée 00:00:00
avant de comparer, mais je veux vraiment savoir l'heure de la journée que je veux aussi pouvoir comparer uniquement par date.
J'ai trouvé un code qui a le même problème et ils comparent l'année, le mois et le jour séparément. Y a-t-il une meilleure manière de faire cela?
la source
Pour une vraie comparaison, vous pouvez utiliser:
la source
-1
,0
et1
vraiment? Ce ne sont que des nombres magiques représentant "moins", "égal" et "plus". Et vous devrez ensuite "comparer" l'entier résultant à quelque chose car il y a trois valeurs possibles. Je suis d' accord avec ce qu'il est @ David beaucoup plus naturel d'utiliserdateTime1.Date < dateTime1.Date
, de même avec<=
,>
et>=
, dans la plupart des applications.Voici comment je fais cela pour travailler avec LINQ.
Si vous ne l'utilisez
dtOne.Date == dtTwo.Date
que ne fonctionnera pas avec LINQ (Erreur: le membre de type spécifié 'Date' n'est pas pris en charge dans LINQ to Entities)la source
EntityFunctions
a été déconseillé dans .NET 4.5.2. Utilisez ceci:DbFunctions.TruncateTime
. Il semble que ce soit la même méthode, juste déplacé ..Si vous utilisez Entity Framework <v6.0, puis utilisez
EntityFunctions.TruncateTime
Si vous utilisez Entity Framework> = v6.0, puis utilisezDbFunctions.TruncateTime
Utilisez soit (en fonction de votre version EF) autour de toute
DateTime
propriété de classe que vous souhaitez utiliser dans votre requête LinqExemple
la source
la source
Vous pouvez l'utiliser si vous utilisez DateFields nullable.
la source
la source
La valeur diff représente le nombre de jours pour l'âge. Si la valeur est négative, la date de début tombe après la date de fin. C'est un bon chèque.
la source
Vous pouvez utiliser Equals ou CompareTo .
Equals : renvoie une valeur indiquant si deux instances DateTime ont la même valeur de date et d'heure.
CompareTo Return Value :
DateTime est nullable:
ou
DateTime n'est pas annulable:
ou
la source
Dans votre clause join ou where, utilisez la
Date
propriété de la colonne. Dans les coulisses, cela exécute uneCONVERT(DATE, <expression>)
opération. Cela devrait vous permettre de comparer les dates sans l'heure.la source
Tu peux essayer
la source
la source