Como selecionar registros entre duas datas No Access? [duplicado]
Eu preciso selecionar registros com DateTime entre duas datas em uma consulta de acesso. O problema é que quando estou executando esta consulta:
select * from logs
where date_added >= CDate("01/10/2018")
AND date_added <= CDate("04/10/2018")
Preciso de ambos os valores de fronteira, mas o resultado não inclui o último dia. Talvez porque "04/10/2018" é convertido para "04/10/2018 00:00:00", e este valor é menos do que todos os valores date_added desse dia.
posso converter date_added apenas para data?
2 answers
AND date_added < DateAdd('d',1,CDate("04/10/2018"))
Uma expressão alternativa:
SELECT * FROM logs
WHERE DateValue(date_added) BETWEEN #01/10/2018# AND #4/10/2018#
Funções de data úteis e sintaxe:
Os literais de datas podem ser delimitados com
#
tanto no código VBA como nas declarações SQL, para que não tenha de chamar o CDate() nos valores das cadeias de caracteres. Exemplos:#10/6/2018 4:16 PM#
,#1/1/2018#
A notação matemática simples pode ser usada para adicionar e subtrair dias inteiros de um valor de data. Exemplo:
#10/6/2018# + 1 == #10/7/2018#
-
Exemplo:DateValue( val )
pega nos argumentos de vários formatos e devolve uma data / hora valor apenas com a parte da data. Isto responde à sua pergunta posso converter o dato_added apenas até à data? devolve essencialmente o mesmo valor de data com a parte temporal como 00:00:00.DateValue(#10/6/2018 4:16 PM#) == #10/6/2018#
DateAdd ( interval, number, date )
Como já foi observado por Milad Aghamohammadi.-
Apenas dentro do SQL (não VBA), pode-se usar o operador entre. Ele trabalha com vários tipos de dados que têm uma ordem de ordenação natural, que inclui a data valores.
Exemplo... WHERE [DateField] BETWEEN #1/1/2018# AND #4/1/2018#