PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zapytanie Postgresql między zakresami dat

Z datami (i godzinami) wiele rzeczy staje się prostszych, jeśli użyjesz >= start AND < end .

Na przykład:

SELECT
  user_id
FROM
  user_logs
WHERE
      login_date >= '2014-02-01'
  AND login_date <  '2014-03-01'

W takim przypadku nadal musisz obliczyć datę rozpoczęcia miesiąca, którego potrzebujesz, ale powinno to być proste na wiele sposobów.

Uproszczono również datę zakończenia; po prostu dodaj dokładnie jeden miesiąc. Żadnych kłopotów z 28., 30., 31. itd.


Ta struktura ma również tę zaletę, że jest w stanie utrzymać wykorzystanie indeksów.


Wiele osób może sugerować formę taką jak poniższa, ale nie użyj indeksów:

WHERE
      DATEPART('year',  login_date) = 2014
  AND DATEPART('month', login_date) = 2

Obejmuje to obliczenie warunków dla każdego wiersza w tabeli (skanowanie) i nieużywanie indeksu do znalezienia zakresu wierszy, które będą pasować (przeszukiwanie zakresu).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawić, by wyliczenia Java i Postgres współpracowały ze sobą w celu aktualizacji?

  2. Czy istnieje sposób na wyłączenie aktualizacji/usuwania, ale nadal zezwalanie na ich wykonywanie przez wyzwalacze?

  3. psql nieprawidłowe polecenie \N podczas przywracania sql

  4. ver.2 BŁĄD PyGreSQL:from _pg import * ImportError:Ładowanie DLL nie powiodło się:Nie można znaleźć określonego modułu

  5. Zmiana z SQLite na PostgreSQL w nowym projekcie Rails