sql >> Databáze >  >> RDS >> PostgreSQL

Výběr záznamů mezi dvěma časovými razítky

Co je špatného na:

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

Pokud chcete pracovat s počtem sekund jako interval :

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

Všimněte si, jak jsem použil standardní formát data ISO 8601 YYYY-MM-DD h24:mi:ss který je jednoznačný pro jakékoli národní prostředí nebo DateStyle nastavení.

Všimněte si také, že první hodnota pro BETWEEN konstrukce musí být menší. Pokud nevíte, která hodnota je menší, použijte BETWEEN SYMMETRIC místo toho.

Ve své otázce odkazujete na typ data a času timestamp jako „datum“, „čas“ a „období“. V názvu jste použili termín „časové rámce“, který jsem změnil na „časová razítka“. Všechny tyto termíny jsou špatné. Jejich volné zaměňování činí otázku srozumitelnější.

To a skutečnost, že jste označili pouze otázku psql (problém se stěží týká terminálu příkazového řádku) by mohl pomoci vysvětlit, proč nikdo neodpověděl celé dny. Normálně je to tady otázka minut. Měl jsem problém pochopit vaši otázku, musel jsem si ji několikrát přečíst.

Musíte rozumět datovým typům date , interval , time a timestamp - s nebo bez časového pásma. Začněte přečtením kapitoly "Typy data/času" v příručce .

Chybová zpráva by také zašla hodně daleko.



  1. Java Server Pages - řazení při vkládání do MySql?

  2. Vývojář SQL:vygenerujte dokument DB pro jiného uživatele

  3. Friendship System Sql Structure &Query

  4. mysql rozdělit hledaný řetězec mezerou a vložit do dotazu