我需要选择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值。
我可以只将添加了日期的日期转换为日期吗?
答案 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#