【问题标题】:Multiple date ranges in MS-AccessMS-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 日。

标签: ms-access ms-access-2007 ms-access-2010


【解决方案1】:

Access 数据库引擎将始终将不明确的 #xx/yy/zzzz# 日期文字解释为 mm/dd/yyyy,而不管 Windows 中指定的区域设置如何。因此,#03/06/2014#总是会被解释为March 6, 2014。另一方面,#13/06/2014# 没有歧义,因为没有第 13 个月,所以会被解释为June 13, 2014

解决办法是

  1. 始终使用#mm/dd/yyyy#,甚至更好,
  2. 始终使用明确的#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#
    

    这是更普遍接受的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2019-04-09
      • 2017-06-08
      • 1970-01-01
      相关资源
      最近更新 更多