我正在尝试在两个日期范围之间的Excel VBA中运行strSQL。
请参见我的代码与此相关的以下部分:
Dim DateMin As String
Dim DateMax As String
DateMin = Format$(Sheets("Setup").Range("c5").Value, "mm/dd/yyyy")
DateMax = Format$(Sheets("Setup").Range("c6").Value, "mm/dd/yyyy")
strSQL = "SELECT [COSTCENTRE_CODE],[PROJECT_CODE],[HOME_VALUE],[CT_DEADLINE] FROM [AA_CST_CENTRE_TRANSACTION_SIMPLE_VIEW] where [CT_DEADLINE] between #" & DateMin & "# AND #" & DateMax & "#"
[当我运行此命令时,我收到“语法不正确nea'#'”错误。单元格C5 + C6的格式是相同的mm / dd / yyyy格式-是否使用美国日期格式,因为相信SQL仅使用美国日期?我尝试过调整日期,但是没有运气。
当我运行“ debug.print strsql”时,我得到以下信息:
SELECT [COSTCENTRE_CODE],[PROJECT_CODE],[HOME_VALUE],[CT_DEADLINE] FROM [AA_CST_CENTRE_TRANSACTION_SIMPLE_VIEW] where [CT_DEADLINE] between #02/01/2020# AND #03/31/2020#
我尝试删除日期附近的#
,但不再收到错误,但是完全没有数据显示-这些日期肯定有数据。
任何人都认为这是SQL问题而不是Excel VBA问题?
运行此SQL是否有效? SELECT [COSTCENTRE_CODE],[PROJECT_CODE],[HOME_VALUE],[CT_DEADLINE] FROM [AA_CST_CENTRE_TRANSACTION_SIMPLE_VIEW]
只是为了确保问题出在日期部分而不是之前。如果未运行,则问题出在此部分,而不是日期部分。
而且我相信SQL使用YYYY-MM-DD hh:mm:ss.sss
作为日期格式。检查是否已完成建议的第一个测试,并且此查询运行。
据我所知,只有Access接受#
,但在SQL-Server中,您将需要使用'
(它也应适用于Access)。
也请注意
BETWEEN '02/01/2020' AND '03/31/2020'
实际上是:
BETWEEN '02/01/2020 00:00:00.000' AND '03/31/2020 00:00:00.000'
因此请注意,您丢失了03/31/2020
凌晨12点之后发生的所有事情。