MS-Access 中的多个日期范围
Posted
技术标签:
【中文标题】MS-Access 中的多个日期范围【英文标题】:Multiple date ranges in MS-Access 【发布时间】:2014-06-03 13:54:03 【问题描述】:我有查询获取值取决于日期范围,例如:
Where (CDATE(TR_DATE) >= ('03/06/2014') and CDATE(TR_DATE) <= ('13/06/2014'))
问题是 Access 将忽略第一个条件,只执行最后一个条件...... 任何建议...
【问题讨论】:
3/6 是 6 月 3 日吗? Access 使用美国系统解释日期,因此 3/6 将转换为 3 月 6 日。 【参考方案1】:Access 数据库引擎将始终将不明确的 #xx/yy/zzzz#
日期文字解释为 mm/dd/yyyy
,而不管 Windows 中指定的区域设置如何。因此,#03/06/2014#
总是会被解释为March 6, 2014
。另一方面,#13/06/2014#
没有歧义,因为没有第 13 个月,所以会被解释为June 13, 2014
。
解决办法是
-
始终使用
#mm/dd/yyyy#
,甚至更好,
始终使用明确的#yyyy/mm/dd#
格式。
【讨论】:
【参考方案2】:我不知道这是否会完全解决您的问题,但 Access 中的日期应该用#
包围而不是'
:
WHERE CDATE(TR_DATE) >= #03/06/2014# AND CDATE(TR_DATE) <= #13/06/2014#
或者:
WHERE Format(TR_DATE, "dd/mm/yyyy") >= Format(#03/06/2014#, "dd/mm/yyyy")
AND Format(TR_DATE, "dd/mm/yyyy") <= Format(#13/06/2014#, "dd/mm/yyyy")
【讨论】:
它只会获取小于 13/06/2014 的所有值【参考方案3】:试试
Where TR_DATE Between #06/03/2014# And #06/13/2014#
或
Where TR_DATE Between #2014-06-03# And #2014-06-13#
这是更普遍接受的格式。
【讨论】:
以上是关于MS-Access 中的多个日期范围的主要内容,如果未能解决你的问题,请参考以下文章
从 JAVA 访问存储在 MS-Access 数据库中的日期/时间数据
SQL/ms-access 中的条件仅考虑月份中的某一天,而不是完整日期