Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Użyj daty w komórce Excela w klauzuli BETWEEN w zapytaniu SQL

Zamiast formatować wartości, takie jak daty lub ciągi znaków w poleceniu SQL, znacznie lepiej jest użyć ADODB.Parameter - w takim przypadku kierowca wykona całą pracę za Ciebie. Nie musisz dbać o cudzysłowy wokół ciągu, formatując datę tak, aby baza danych zrozumiała ją poprawnie (co w dużym stopniu zależy od bazy danych, ustawień regionalnych itp.). Dodatkowo jest to ochrona przed wstrzyknięciem SQL. Ponadto optymalizator zapytań może wykonywać swoją pracę znacznie lepiej, ponieważ za każdym razem otrzymuje to samo polecenie SQL i zapamiętuje plan wykonania.

Wada:kod jest nieco bardziej skomplikowany, ponieważ musisz zaangażować ADODB.command obiekt.

W instrukcji SQL umieszczasz prosty ? w miejscu, w którym chcesz mieć parametr. Musisz tylko uważać, aby liczby i pozycja ? i parametry są zgodne.

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

PS Byłem trochę leniwy, jeśli chodzi o obsługę dat, jeśli masz dane dokładnie o północy, dostaniesz za dużo danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL zapisuje wyniki EXECUTE w zmiennej?

  2. Zarządzaj MySQL za pomocą phpMyAdmin na Ubuntu 9.10 (Karmic)

  3. Włącz tryb binarny podczas przywracania bazy danych ze zrzutu SQL

  4. Laravel:Pobierz obiekt z kolekcji według atrybutów

  5. Importuj duży plik MySQL .sql w systemie Windows za pomocą Force