Datediff无法在VBA查询中访问Excel

时间:2018-06-18 12:48:31

标签: excel vba excel-vba ms-access datediff

我正在尝试在excel上的vba上进行这个基本的选择查询:

"SELECT * FROM Tabela1 WHERE DateDiff('yyyy', [Vencimento], " & filter & ") = 0"

所以我希望在“Vencimento”的年份与所需的年份相匹配时取得所有结果。但是当“filter = 2016”和“Vencimento = 01/11/2016”时,这个Datediff会返回-111(或类似的东西)。

[Vencimento]是访问表上的一列,过滤器位于excel上的单元格中。我觉得excel不能和[Vencimento]一起作为日期,即使我在访问这个列作为日期进行配置,我也不知道如何制作这个。

1 个答案:

答案 0 :(得分:1)

以下内容适用于T-SQL和MS Access:

SELECT * FROM Tabela1 WHERE YEAR( [Vencimento] ) = 2016

因此,如果您希望根据名为 过滤器 的单元格中的值进行构建,那么:

SQL$ = "SELECT * FROM Tabela1 WHERE YEAR( [Vencimento] ) = " & range("filter").value

但是,如果您的 过滤器 单元格包含日期,但格式化为仅显示年份,那么您需要从中提取年份值,因此:

SQL$ = "SELECT * FROM Tabela1 WHERE YEAR( [Vencimento] ) = " & Year(range("filter").value)