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

Jak dopasować cały dzień do pola daty i godziny?

Prześlij swój timestamp wartość do date jeśli chcesz prostej składni. Tak:

SELECT *
FROM   tbl
WHERE  timestamp_col::date = '2011-12-01';  -- date literal

Jednak przy dużych stołach będzie to szybsze:

SELECT *
FROM   tbl
WHERE  timestamp_col >= '2011-12-01 0:0'    -- timestamp literal
AND    timestamp_col <  '2011-12-02 0:0';

Powód:drugie zapytanie nie musi przekształcać każdej wartości w tabeli i może wykorzystywać prosty indeks w kolumnie sygnatury czasowej. Wyrażenie jest sargable.

Uwaga wykluczyła górną granicę (< zamiast <= ) dla prawidłowego wyboru.
Możesz to nadrobić, tworząc indeks wyrażenia takiego jak to:

CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));

Wtedy pierwsza wersja zapytania będzie tak szybka, jak to tylko możliwe.



  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 a PostgreSQL dla aplikacji internetowych

  2. Zapytanie PostgreSQL za pomocą Npgsql i Entity Framework przy użyciu nieakcentu

  3. Przewodnik po partycjonowaniu danych w PostgreSQL

  4. Operator nie istnieje:liczba całkowita =? podczas korzystania z Postgresa

  5. Rails 3.1 - Pushing to Heroku - Błędy podczas instalacji adaptera postgres?