我在比较两个日期时遇到了麻烦: 数据库中有短日期时间字段,由Microsoft Access 2002-2003数据扩展(#yyyy / mm / dd#)记录。当我试图通过运算符“大于”和“小于”进行比较时,它工作正常,但是当我用“等于”运算符替换它时,它给了我一个空的结果。以下是查询:
SELECT * FROM Logs WHERE (Date = #2015.06.11#)
- 返回空结果,但
SELECT * FROM Logs WHERE (Date > #2015.06.10#)
- 没问题。
我做错了什么?
答案 0 :(得分:2)
日期/时间值#2015.06.11#包含时间组件, 12:00 AM 。
如果该日期的任何存储值包含 12:00 AM 以外的时间组件,则WHERE
子句将排除这些值。
使用修改后的WHERE
子句检索目标日期的所有行(无论一天中的哪个时间),并显示存储日期值的时间成分:
SELECT
l.*,
Format(l.Date, 'h:nn ampm') AS time_component
FROM Logs AS l
WHERE l.Date >= #2015.06.11# AND l.Date < #2015.06.12#;
注意,对于我的系统区域设置,由于点分隔符,#2015.06.11#不会被识别为日期/时间值。但是,我认为格式对您的语言环境有效。如果有任何疑问,请尝试使用其他分隔符:#2015-06-11#或#2015/06/11#
答案 1 :(得分:0)
我认为你没有问题。您的表只包含该日期的条目。