sql >> Database teknologi >  >> RDS >> PostgreSQL

Valg af poster mellem to tidsstempler

Hvad er der galt med:

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

Hvis du vil arbejde med et tæller af sekunder som interval :

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

Bemærk, hvordan jeg brugte standard ISO 8601-datoformatet ÅÅÅÅ-MM-DD h24:mi:ss hvilket er utvetydigt med enhver lokalitet eller DateStyle indstilling.

Bemærk også, at den første værdi for BETWEEN konstruktionen skal være den mindste. Hvis du ikke ved, hvilken værdi der er mindre, brug MELLEM SYMMETRIC i stedet.

I dit spørgsmål henviser du til datetime-typen timestamp som "dato", "tid" og "periode". I titlen brugte du udtrykket "tidsrammer", som jeg ændrede det til "tidsstempler". Alle disse udtryk er forkerte. Frit at udveksle dem gør spørgsmålet endnu sværere at forstå.

Det, og det faktum, at du kun taggede spørgsmålet psql (problemet vedrører næppe kommandolinjeterminalen) kan hjælpe med at forklare, hvorfor ingen svarede i flere dage. Normalt er det et spørgsmål om minutter her omkring. Jeg havde svært ved at forstå dit spørgsmål, måtte læse det et par gange.

Du skal forstå datatyperne date , interval , tid og tidsstempel - med eller uden tidszone. Start med at læse kapitlet "Dato/tidstyper" i manualen .

Fejlmeddelelse ville også have nået langt.



  1. 3 måder at returnere Modulo i MariaDB

  2. Fejlkode:1406. Data for lange til kolonne - MySQL

  3. Sådan konverteres mySQL Query til Laravel 5.4 Query Builder

  4. Advarsel:session_start():Kan ikke sende sessionscookie - overskrifter er allerede sendt af (output startede kl