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

Избиране на записи между два времеви клейма

Какво не е наред с:

SELECT a,b,c
FROM   table
WHERE  xtime BETWEEN '2012-04-01 23:55:00'::timestamp
                 AND now()::timestamp;

Ако искате да работите с броене на секунди като интервал :

...
WHERE  xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
                 AND now()::timestamp;

Забележете как използвах стандартния формат за дата ISO 8601 ГГГГ-ММ-ДД h24:mi:ss което е недвусмислено с всеки локал или DateStyle настройка.

Обърнете внимание също, че първата стойност за BETWEEN конструкцията трябва да е по-малката. Ако не знаете коя стойност е по-малка, използвайте BETWEEN SYMMETRIC вместо това.

Във вашия въпрос се позовавате на типа дата и час timestamp като "дата", "час" и "период". В заглавието използвахте термина „времеви рамки“, който промених на „времеви отпечатъци“. Всички тези термини са грешни. Свободното им разменяне прави въпроса още по-труден за разбиране.

Това и фактът, че сте маркирали само въпроса psql (проблемът едва ли засяга терминала на командния ред) може да помогне да се обясни защо никой не отговаря с дни. Обикновено това е въпрос на минути наоколо. Трудно ми беше да разбера въпроса ви, трябваше да го прочета няколко пъти.

Трябва да разберете типовете данни date , интервал , време и timestamp - със или без часова зона. Започнете, като прочетете главата "Типове дата/час" в ръководството .

Съобщението за грешка също би извършило дълъг път.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете NULL вместо празен низ с PDO

  2. Грешка при инсталиране на Psycopg2 на MacOS 10.9.5

  3. PostgreSQL последователност, която гарантира уникален идентификатор

  4. psql:сървърът неочаквано затвори връзката

  5. Как да монтирате postgresql том с помощта на Aws EBS в Kubernete