strSQL之间的日期范围为excel VBA

问题描述 投票:0回答:1

我正在尝试在两个日期范围之间的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 excel vba
1个回答
0
投票

运行此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点之后发生的所有事情。

© www.soinside.com 2019 - 2024. All rights reserved.