sql >> Databasteknik >  >> RDS >> PostgreSQL

Välja poster mellan två tidsstämplar

Vad är det för fel på:

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

Om du vill arbeta med ett antal sekunder som intervall :

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

Obs, hur jag använde standard ISO 8601-datumformatet ÅÅÅÅ-MM-DD h24:mi:ss vilket är otvetydigt med alla språkinställningar eller DateStyle inställning.

Observera också att det första värdet för BETWEEN konstruktionen måste vara den mindre. Om du inte vet vilket värde som är mindre använd MELLAN SYMMETRISK istället.

I din fråga hänvisar du till datetime-typen tidsstämpel som "datum", "tid" och "period". I rubriken använde du termen "tidsramar", vilket jag ändrade det till "tidsstämplar". Alla dessa termer är felaktiga. Att fritt utbyta dem gör frågan ännu svårare att förstå.

Det, och det faktum att du bara taggade frågan psql (problemet gäller knappast kommandoradsterminalen) kan hjälpa till att förklara varför ingen svarade på flera dagar. Normalt handlar det om minuter här. Jag hade svårt att förstå din fråga, var tvungen att läsa den ett par gånger.

Du måste förstå datatyperna date , intervall , tid och tidsstämpel - med eller utan tidszon. Börja med att läsa kapitlet "Datum/Time Types" i manualen .

Felmeddelandet skulle också ha gått långt.



  1. error (objektet 'datetime.datetime' har inget attribut 'split') i django 1.11.4

  2. Förebyggande mot MySQL-injektion

  3. Kan jag använda CASE-satsen i ett JOIN-tillstånd?

  4. Felrapport - ORA-25155:kolumn som används i NATURAL join kan inte ha kvalificerare 25155. 00000 - kolumn som används i NATURAL join kan inte ha kvalificerare