sql >> Databasteknik >  >> RDS >> PostgreSQL

Oväntade resultat från SQL-fråga med BETWEEN tidsstämplar

Kontrollera datatypen av kolumnerna och din tidszon . Du kanske förvirrar timestamp with time zone och timestamp .

Det verkar som att du har timestamp i din tabell, men fråga med timestamptz . På så sätt beror allt på den lokala tidszonen för din session (som som standard är serverns tidszon om inte annat anges.)

Byt båda till timestamptz , eller timestamp om tidszoner är helt irrelevanta för dig. (Om du är osäker, använd timestamptz .)

Inte orsaken till ditt problem, men din fråga bör förmodligen vara:

SELECT id, text, category, starttime, endtime, creation 
FROM   entries 
WHERE  starttime >= timestamp '2013-03-21' -- defaults to 00:00 time
AND    starttime <  timestamp '2013-03-22'
ORDER  BY id

a BETWEEN x AND y är nästan alltid fel för timestamp typer på grund av bråktal! Vad skulle din fråga göra med starttime = '2013-03-21T23:59:59.123+00' ?




  1. Finns det något sätt att göra en hel MySQL-rad unik

  2. Avsluta hängd fråga (inaktiv i transaktion)

  3. Hur man får inläggslistan och tillhörande taggar med det minsta antalet frågor

  4. Hjälp att beräkna komplex summa i hierarkisk datauppsättning