¿Hay alguna manera de comparar dos DateTime
variables Linq2Sql
pero ignorar la parte de Tiempo?
La aplicación almacena elementos en la base de datos y agrega una fecha de publicación. Quiero mantener la hora exacta, pero aún así puedo obtener la fecha en sí.
Quiero comparar 12/3/89 12:43:34
y 12/3/89 11:22:12
no tener en cuenta la hora real del día, por lo que ambos se consideran iguales.
Supongo que puedo configurar todas las horas del día 00:00:00
antes de comparar, pero en realidad quiero saber la hora del día, solo quiero poder comparar solo por fecha.
Encontré un código que tiene el mismo problema y comparan el año, mes y día por separado. ¿Hay una mejor manera de hacer esto?
Para una verdadera comparación, puede usar:
fuente
-1
,0
y1
, en realidad? Son solo números mágicos que representan "menos", "igual" y "mayor". Y luego tendrá que "comparar" el entero resultante con algo porque hay tres valores posibles. Debo estar de acuerdo con @David en que es mucho más natural de usardateTime1.Date < dateTime1.Date
, y de manera similar con<=
,>
y>=
, en la mayoría de las aplicaciones.Así es como hago esto para trabajar con LINQ.
Si solo lo usa
dtOne.Date == dtTwo.Date
, no funcionará con LINQ (Error: el miembro de tipo especificado 'Fecha' no es compatible con LINQ to Entities)fuente
EntityFunctions
ha quedado en desuso en .NET 4.5.2. Use este lugar:DbFunctions.TruncateTime
. Parece ser el mismo método, recién movido ..Si está usando Entity Framework <v6.0, luego use
EntityFunctions.TruncateTime
Si está usando Entity Framework> = v6.0, luego useDbFunctions.TruncateTime
Use cualquiera (basado en su versión EF) alrededor de cualquier
DateTime
propiedad de clase que desee usar dentro de su consulta LinqEjemplo
fuente
fuente
Puede usar esto si está usando DateFields anulables.
fuente
fuente
El valor de diferencia representa el número de días para la edad. Si el valor es negativo, la fecha de inicio es posterior a la fecha de finalización. Este es un buen cheque.
fuente
Puede usar Equals o CompareTo .
Igual : devuelve un valor que indica si dos DateTime instancias tienen el mismo valor de fecha y hora.
Comparar para devolver el valor :
DateTime es anulable:
o
DateTime no es anulable:
o
fuente
En su cláusula join o where, use la
Date
propiedad de la columna. Detrás de escena, esto ejecuta unaCONVERT(DATE, <expression>)
operación. Esto debería permitirle comparar fechas sin el tiempo.fuente
Puedes probar
fuente
fuente