PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Неочаквани резултати от SQL заявка с BETWEEN клеймца за време

Проверете типа данни на колоните и вашата часова зона . Може да сте объркващи timestamp with time zone и timestamp .

Изглежда, че имате timestamp във вашата таблица, но заявка с timestamptz . По този начин всичко зависи от местната часова зона на вашата сесия (която по подразбиране е часовата зона на сървъра, ако не е указано друго.)

Превключете и двете към timestamptz , или timestamp ако часовите зони са напълно без значение за вас. (Ако се съмнявате, използвайте timestamptz .)

Не е причината за вашия проблем, но вашата заявка вероятно трябва да бъде:

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 е почти винаги грешен за timestamp типове поради дробни числа! Какво би направила вашата заявка с 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. Преглед на серийния псевдотип на данни за PostgreSQL

  2. Странна грешка при подреждане (бъг ли е?) при подреждане на две колони с еднакви стойности

  3. RPostgreSQL - R връзка към Amazon Redshift - Как да ПИШЕТЕ/Публикувате по-големи набори от данни

  4. Laravel Eloquent truncate - Ограничение за външен ключ

  5. WAL архив:НЕУСПЕШНО (моля, уверете се, че WAL доставката е настроена)