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

Neočekávané výsledky z SQL dotazu s BETWEEN časovými razítky

Zkontrolujte typ dat sloupců a vaše časové pásmo . Možná jste si pletli timestamp with time zone a timestamp .

Zdá se, že máte timestamp ve vaší tabulce, ale dotazujte pomocí timestamptz . Tímto způsobem vše závisí na místním časovém pásmu vaší relace (jehož výchozím nastavením je časové pásmo serveru, pokud není uvedeno jinak.)

Přepněte obě na timestamptz , nebo timestamp pokud jsou pro vás časová pásma zcela irelevantní. (Pokud si nejste jisti, použijte timestamptz .)

Není to příčina vašeho problému, ale váš dotaz by měl pravděpodobně znít:

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 je téměř vždy špatně pro timestamp typů kvůli zlomkovým číslům! Co by váš dotaz udělal s starttime = '2013-03-21T23:59:59.123+00' ?




  1. Vyhledávání pomocí zástupných znaků v zašifrovaných datech v databázi MySQL?

  2. Použití Javy k vytvoření zabezpečeného připojení k MySQL Amazon RDS (SSL/TLS)

  3. Získejte všechny uzly dítěte, vnuka atd. pod rodiče pomocí php s výsledky dotazu mysql

  4. MySQL limit výsledků na kategorii