Existe uma maneira de comparar duas DateTime
variáveis, Linq2Sql
mas desconsiderando a parte Time.
O aplicativo armazena itens no banco de dados e adiciona uma data publicada. Quero manter a hora exata, mas ainda assim posso conseguir a data.
Eu quero comparar 12/3/89 12:43:34
e 12/3/89 11:22:12
ignorar a hora real do dia, para que ambos sejam considerados iguais.
Acho que posso definir todas as horas do dia como 00:00:00
antes da comparação, mas na verdade quero saber a hora do dia em que também quero poder comparar apenas por data.
Encontrei um código com o mesmo problema e eles comparam o ano, o mês e o dia separadamente. Existe uma maneira melhor de fazer isso?
Para uma comparação verdadeira, você pode usar:
fonte
-1
,0
e1
, realmente? Eles são apenas números mágicos representando "menos", "igual" e "maior". E você terá que "comparar" o número inteiro resultante com algo depois, porque existem três valores possíveis. Tenho de concordar com @ David que é muito mais natural para usardateTime1.Date < dateTime1.Date
, e da mesma forma, com<=
,>
e>=
, na maioria das aplicações.É assim que faço isso para trabalhar com o LINQ.
Se você usá
dtOne.Date == dtTwo.Date
- lo apenas , não funcionará com o LINQ (erro: o membro do tipo especificado 'Data' não é suportado no LINQ to Entities)fonte
EntityFunctions
foi preterido no .NET 4.5.2. Utilize este em vez disso:DbFunctions.TruncateTime
. Ele parece ser o método idêntico, apenas movido ..Se você estiver usando o Entity Framework <v6.0, use
EntityFunctions.TruncateTime
Se você estiver usando o Entity Framework> = v6.0, useDbFunctions.TruncateTime
Use (com base na sua versão EF) em torno de qualquer
DateTime
propriedade de classe que você deseja usar dentro da sua consulta LinqExemplo
fonte
fonte
Você pode usar isso se estiver usando DateFields anuláveis.
fonte
fonte
O valor diff representa o número de dias para a idade. Se o valor for negativo, a data de início cai após a data de término. Esta é uma boa verificação.
fonte
Você pode usar Equals ou CompareTo .
Igual a : Retorna um valor indicando se duas instâncias DateTime têm o mesmo valor de data e hora.
CompareTo Return Value :
DateTime é anulável:
ou
DateTime não é anulável:
ou
fonte
Na sua cláusula join ou where, use a
Date
propriedade da coluna Nos bastidores, isso executa umaCONVERT(DATE, <expression>)
operação. Isso deve permitir comparar datas sem o horário.fonte
Podes tentar
fonte
fonte