sql >> Database >  >> RDS >> PostgreSQL

Records tussen twee tijdstempels selecteren

Wat is er mis met:

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

Als u wilt werken met een aantal seconden als interval :

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

Let op, hoe ik de standaard ISO 8601-datumnotatie gebruikte YYYY-MM-DD h24:mi:ss die ondubbelzinnig is met elke landinstelling of DateStyle instelling.

Merk ook op dat de eerste waarde voor de BETWEEN constructie moet de kleinere zijn. Als je niet weet welke waarde kleiner is, gebruik dan BETWEEN SYMMETRIC in plaats daarvan.

In je vraag verwijs je naar het datetime type timestamp als "datum", "tijd" en "periode". In de titel gebruikte je de term "timeframes", die ik heb veranderd in "timestamps". Al deze termen zijn fout. Door ze vrijelijk uit te wisselen, wordt de vraag nog moeilijker te begrijpen.

Dat, en het feit dat je alleen de vraag psql . hebt getagd (het probleem betreft nauwelijks de opdrachtregelterminal) zou kunnen helpen verklaren waarom dagenlang niemand antwoordde. Normaal gesproken is het hier een kwestie van minuten. Ik kon je vraag moeilijk begrijpen, moest hem een ​​paar keer lezen.

U moet de gegevenstypen date begrijpen , interval , time en timestamp - met of zonder tijdzone. Begin met het lezen van het hoofdstuk "Datum-/tijdtypes" in de handleiding .

Foutmelding zou ook een lange weg zijn geweest.



  1. Is er een manier om een ​​hele MySQL-rij uniek te maken?

  2. Zijn mysql meerdere invoegingen binnen een atomaire enkele query?

  3. Hoe worden reactieve streams in Slick gebruikt voor het invoegen van gegevens?

  4. Ondersteunt MySQL historische datum (zoals 1200)?