Пока вы решили свою ситуацию, рассмотрите возможность параметризации в вашем соединении ODBC, которое является предпочтительным способом запуска SQL на уровне приложений, таком как VBA. С помощью параметризации вы избегаете необходимости объединять или пунктуировать, и это рекомендуется в общей индустрии программирования за пределами VBA (например, Java, Python, PHP) или MariaDB (Oracle, SQL Server, Postgres).
Ниже предполагается, что вы используете ADO в Excel и запускает позднюю привязку для модуля.
Public Sub RunSQL()
Dim firstdate As Date, seconddate As Date
Dim sql as String, conn As Object, cmd As Object, rst As Object
Const adCmdText = 1, adParamInput = 1, adDate = 7
firstdate = DateValue(InputBox("Enter starting date (yyyy-mm-dd)"))
seconddate = firstdate - 7
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
conn.Open "Driver={MySQL ODBC 5.3 Unicode Driver};host=hostname;" _
& "database=databasename;UID=username;PWD=****"
' PREPARED STATEMENT (NO DATA)
sql = "SELECT Date_Time, ChargerSt FROM `MyDBx`.`table` WHERE `DateTime` BETWEEN ? AND ?"
' CONFIGURE ADO COMMAND
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn
.CommandText = sql
.CommandType = adCmdText
' BIND DATE VALUES
.Parameters.Append .CreateParameter("start_param", adDate, adParamInput, , firstdate)
.Parameters.Append .CreateParameter("start_param", adDate, adParamInput, , seconddate)
' CREATE RECORDSET
Set rst = .Execute
End With
'... USE RECORDSET
rst.Close
Set rst = Nothing: Set cmd = Nothing: Set conn = Nothing
End Sub