sql >> Databáze >  >> RDS >> Mysql

Použijte datum v buňce aplikace Excel v klauzuli BETWEEN v dotazu SQL

Místo formátování hodnot, jako jsou data nebo řetězce do příkazu SQL, je mnohem lepší použít ADODB.Parameter - v tom případě řidič udělá veškerou práci za vás. Nemusíte se starat o uvozovky kolem řetězce, formátování data tak, aby mu databáze správně rozuměla (což do značné míry závisí na databázi, regionálním nastavení a podobně). Navíc je to ochrana proti SQL injection. Optimalizátor dotazů navíc může dělat svou práci mnohem lépe, protože pokaždé dostane stejný příkaz SQL a pamatuje si plán provádění.

Nevýhoda:kód je trochu složitější, protože musíte zapojit ADODB.command objekt.

Do příkazu SQL vložíte jednoduchý ? na místě, kde chcete mít parametr. Musíte jen dbát na to, aby čísla a pozice ? a parametry se shodují.

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. Byl trochu líný na zpracování data, pokud máte data přesně o půlnoci, dostali byste příliš mnoho dat.



  1. Jak vypočítat věk od data narození v SQL

  2. PostgreSQL na vzestupu:2018 Postgres Findings &2019 Trends

  3. Šifrování v klidu a/nebo AES_ENCRYPT

  4. 6 způsobů, jak zkontrolovat, zda existuje tabulka na serveru SQL (příklady T-SQL)