如何在Access中两个日期之间选择记录?

时间:2018-10-06 05:00:55

标签: sql datetime ms-access

我需要选择Access查询中两个日期之间具有DateTime的记录。问题是当我执行此查询时:

select *  from logs 
where date_added >= CDate("01/10/2018") 
AND date_added <= CDate("04/10/2018")

我需要两个边界值,但结果不包括最后一天。可能是因为“ 04/10/2018”被转换为“ 04/10/2018 00:00:00”,并且该值小于当天的所有date_added值。

我可以只将添加了日期的日期转换为日期吗?

2 个答案:

答案 0 :(得分:1)

您可以在日期中添加一天吗?

AND date_added < DateAdd('d',1,CDate("04/10/2018"))

答案 1 :(得分:1)

另一种表达方式:

SELECT * FROM logs 
WHERE DateValue(date_added) BETWEEN  #01/10/2018#  AND  #4/10/2018#

有用的日期函数和语法:

  • 日期文字可以在VBA代码和SQL语句中用#分隔,因此不必在字符串值上调用CDate()。示例:#10/6/2018 4:16 PM##1/1/2018#

  • 简单的数学符号可用于从日期值中加减整天。示例:#10/6/2018# + 1 == #10/7/2018#

  • DateValue( val )接受各种格式的参数,并返回仅包含日期部分的日期/时间值。这回答了您的问题我可以将添加了date_add的日期仅转换为日期吗?,它基本上会返回与日期部分相同的日期值,即 00:00:00

    示例:DateValue(#10/6/2018 4:16 PM#) == #10/6/2018#

  • DateAdd ( interval, number, date ),已经由Milad Aghamohammadi指出。

  • 仅在SQL(不是VBA)中,可以使用BETWEEN运算符。它可用于具有自然排序顺序(包括日期值)的各种数据类型。

    示例... WHERE [DateField] BETWEEN #1/1/2018# AND #4/1/2018#