【问题标题】:data type mismatch when comparing dates in MS-Access在 MS-Access 中比较日期时数据类型不匹配
【发布时间】:2010-05-10 18:01:09
【问题描述】:

我将日期以“常规日期”格式存储在 MS-Access 表中。

我正在尝试创建一个返回特定日期范围(2010 年 3 月以来的所有记录)之间记录的查询,但是我遇到了“标准表达式中的数据类型不匹配”消息。

这是我的声明;

SELECT Loan.loan_datetimeLeant, product_name, 
      [product_artist/director], product_category, loanItem_cost

FROM Loan 
INNER JOIN ((Product 
INNER JOIN Ite
ON Product.[product_id] = Item.[product_id]) 
INNER JOIN Loan_Items 
ON Item.[item_id] = Loan_Items.[item_id]) 
ON (Loan.[cust_id] = Loan_Items.[cust_id]) 
AND (Loan.[loan_datetimeLeant] = Loan_Items.[loan_datetimeLeant])

WHERE Loan.loan_datetimeLeant >= '01/03/2010' 
AND Loan.loan_datetimeLeant <= '31/03/2010'

ORDER BY Loan.loan_datetimeLeant;

我尝试过更改日期格式(mm/dd/yyyy、dd/mm/yyyy 00:00:00)

【问题讨论】:

  • 当您说“我将日期以 'General Date' 格式存储在 MS-Access 表中”时,您是错误的,除非您的意思是使用文本字段来存储这些日期。如果数据类型是日期,则它们以双精度形式存储,整数部分表示自 1899 年 12 月 30 日以来的天数,小数部分表示一天中的时间,作为 24 小时的一部分。在 Jet/ACE SQL 中,在标准中使用明确的日期格式或 DateSerial() 非常重要,以避免美国与非美国日期格式出现问题。但这完全独立于存储。

标签: sql ms-access


【解决方案1】:

访问日期的分隔符是 #:

WHERE Loan.loan_datetimeLeant >= #03/01/2010# AND Loan.loan_datetimeLeant <= #03/31/2010#

【讨论】:

    猜你喜欢
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多