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 中的多个日期范围的主要内容,如果未能解决你的问题,请参考以下文章

ms-access:仅显示特定日期内记录的报告

查询未在MS-Access中使用日期条件

从 JAVA 访问存储在 MS-Access 数据库中的日期/时间数据

SQL/ms-access 中的条件仅考虑月份中的某一天,而不是完整日期

将 Excel 中的动态和静态范围导入到 MS-Access 中,而不是从单元格 A1 开始

MS-Access:选择每个会计月的开始日期和日期