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?

Author: Gordon Linoff, 2018-10-06

2 answers

Pode adicionar um dia ao seu encontro?
AND date_added < DateAdd('d',1,CDate("04/10/2018"))
 2
Author: Milad Aghamohammadi, 2018-10-06 05:17:54

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#

  • 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.

    Exemplo: 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#
 1
Author: C Perkins, 2018-10-06 21:33:25