sql >> Database teknologi >  >> RDS >> Mysql

Brug dato i Excel-celle i BETWEEN-sætning i SQL-forespørgsel

I stedet for at formatere værdier som datoer eller strenge i SQL-kommandoen, er det meget bedre at bruge ADODB.Parameter - i så fald vil chaufføren gøre alt arbejdet for dig. Du skal ikke passe på med anførselstegn omkring en streng, formatering af en dato, så databasen forstår den korrekt (hvilket i høj grad afhænger af database, regionale indstillinger og så videre). Plus det er en beskyttelse mod SQL-injektion. Derudover kan forespørgselsoptimeringsværktøjet udføre sit arbejde meget bedre, fordi det får den samme SQL-kommando hver gang og husker udførelsesplanen.

Ulempe:kode bliver lidt mere kompliceret, fordi du skal involvere en ADODB.command objekt.

I din SQL-sætning sætter du en simpel ? på det sted, hvor du vil have en parameter. Du skal bare passe på, at tallene og placeringen af ​​? og parametre matcher.

Dim Conn As New ADODB.Connection, cmd As New ADODB.Command, param As ADODB.Parameter, rs As ADODB.Recordset
Conn.Open "<your connection string>"
Set cmd.ActiveConnection = Conn
cmd.CommandText = "SELECT cID FROM logistics WHERE DATE(insert_timestamp) BETWEEN ? AND ? GROUP BY 1"

Set param = cmd.CreateParameter(, adDate, adParamInput, , Date)
cmd.Parameters.Append param
Set param = cmd.CreateParameter(, adDate, adParamInput, , Date + 1)
cmd.Parameters.Append param

Set rs = cmd.Execute
Debug.Print rs.Fields(0).Name, rs(0).Value

P.S. Var lidt doven til datohåndteringen, hvis du har data præcis ved midnat, ville du få for meget data.



  1. Henter data fra MySQL i batches via Python

  2. En guide til databaseautomatisering med Severalnines ClusterControl

  3. Kalendertabel for Data Warehouse

  4. Mysql bliver ' til ’?