使用Access 2007 SQL中的Dateserial比较日期

时间:2015-06-17 15:13:33

标签: sql ms-access-2007

我有以下SQL

SELECT P1.Column1, P1.NextApprovalDate
FROM Procedures P1
WHERE DATESERIAL(YEAR(P1.NextApprovalDate), MONTH(P1.NextApprovalDate), 1 )  
= DATESERIAL(YEAR(Date()), MONTH(DATE()) + 1, 1);

我收到错误,即“条件表达式中的数据类型不匹配”。我也尝试结合使用CDate和Format函数,但继续得到相同的错误。当我在那里选择标准时,SQL运行正常。如何格式化标准?

1 个答案:

答案 0 :(得分:1)

确定。我得到了这个工作,但它有点像Access想要它的方式。 =符号从未用于比较。为什么我不知道。 BETWEEN工作了。如果有人能找到让'='工作的方法,请告诉我。感谢@Hansup让我指出了正确的方向。

SELECT P2.Column1, P2.NextApprovalDate
FROM (SELECT Procedures.Column1, Procedures.NextApprovalDate FROM   
Procedures WHERE Procedures.NextApprovalDate IS NOT NULL)  AS P2
WHERE DATESERIAL(YEAR(P2.NextApprovalDate),MONTH(P2.NextApprovalDate),1)   
Between DATESERIAL(YEAR(Date()),MONTH(Date())+1,1) And  
DATESERIAL(YEAR(Date()),MONTH(Date())+1,1);