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

Nieoczekiwane wyniki zapytania SQL ze znacznikami czasu BETWEEN

Sprawdź typ danych kolumn i Twojej strefy czasowej . Możesz być mylący timestamp with time zone i timestamp .

Wygląda na to, że masz timestamp w tabeli, ale zapytanie z timestamptz . W ten sposób wszystko zależy od lokalnej strefy czasowej sesji (która domyślnie jest strefą czasową serwera, jeśli nie określono inaczej).

Przełącz oba na timestamptz lub timestamp jeśli strefy czasowe są dla Ciebie zupełnie nieistotne. (W razie wątpliwości użyj timestamptz .)

Nie przyczyna problemu, ale Twoje zapytanie prawdopodobnie powinno brzmieć:

SELECT id, text, category, starttime, endtime, creation 
FROM   entries 
WHERE  starttime >= timestamp '2013-03-21' -- defaults to 00:00 time
AND    starttime <  timestamp '2013-03-22'
ORDER  BY id

a BETWEEN x AND y jest prawie zawsze źle dla timestamp typy ze względu na liczby ułamkowe! Co zrobi Twoje zapytanie z starttime = '2013-03-21T23:59:59.123+00' ?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zarządzanie wysoką dostępnością w PostgreSQL – Część II:Menedżer replikacji

  2. psycopg2 na Elastic Beanstalk - nie można wdrożyć aplikacji

  3. Musisz dynamicznie wybrać element tablicy JSON z tabeli postgresql

  4. Jak znaleźć wszystkie kombinacje (podzbiór) dowolnej wielkości tablicy w postgresql

  5. Jak utworzyć tabelę tylko wtedy, gdy nie istnieje w PostgreSQL