我正在尝试在excel上的vba上进行这个基本的选择查询:
"SELECT * FROM Tabela1 WHERE DateDiff('yyyy', [Vencimento], " & filter & ") = 0"
所以我希望在“Vencimento”的年份与所需的年份相匹配时取得所有结果。但是当“filter = 2016”和“Vencimento = 01/11/2016”时,这个Datediff会返回-111(或类似的东西)。
[Vencimento]是访问表上的一列,过滤器位于excel上的单元格中。我觉得excel不能和[Vencimento]一起作为日期,即使我在访问这个列作为日期进行配置,我也不知道如何制作这个。
答案 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)