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

PostgreSQL- Filtruj zakres dat

Twoje rozwiązanie jest w porządku. Jeśli daty są dosłowne, wolałbym jednak:

WHERE datefield >= '2010-01-01 00:00:00' 
 AND  datefield <  '2012-01-01 00:00:00'

Działa to dokładnie tak samo, ale jest łatwiejsze w utrzymaniu, ponieważ wyjaśnia, że ​​każda dosłowna „data” jest znacznikiem czasu, a nie datą. Załóżmy na przykład, że ktoś zmieni zapytanie na następujące

    AND  datefield <=  '2012-01-01'

... oczekiwano (i nie powiodło się) uwzględnienia w zapytaniu pełnego dnia „2012-01-01”. Dzięki późniejszej składni intencja jest bardziej jasna i zapobiega to nieporozumieniom.

Aby było to jeszcze bardziej jasne (być może zbyt gadatliwe), możesz wykonać wyraźne rzutowanie:

WHERE datefield >= '2010-01-01 00:00:00'::timestamp 
 AND  datefield <  '2012-01-01 00:00:00'::timestamp

Nie użyłbym to_date() tutaj z podobnych powodów (potencjalne pomylenie typów danych), ani to_timestamp() (zwraca timestamptz ).

BTW, zmodyfikowałem sprawę, aby była zgodna z zalecaną praktyką (słowa kluczowe pisane wielkimi literami, identyfikatory pisane małymi literami)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 10 w systemie Linux — LC_COLLATE locale en_US.utf-8 niepoprawne

  2. Jak uzyskać klucz obcy tabeli podrzędnej, aby miał taką samą wartość jak podstawowy klucz autoinkrementacji rodzica?

  3. Jak zwiększyć przepustowość połączenia dla pgbouncer?

  4. Postgresql. UTWÓRZ CAST 'znak zmienny' na 'liczba całkowita'

  5. Czy mogę poprosić Postgresql o ignorowanie błędów w transakcji?