Portál AbcLinuxu, 10. května 2025 12:31

Dotaz: Jak v postgresql porovnám sloupec je menší nebo roven než timestamp without timezone

2.4.2015 17:44 vasek
Jak v postgresql porovnám sloupec je menší nebo roven než timestamp without timezone
Přečteno: 443×
Odpovědět | Admin
Ahoj. Snažím se v PHP zobrazit seznam řádků tak, že sloupec definovaný jako timestamp without timezone musí být menší nebo roven než. Nicméně postgresql mi pořád vrací jen "menší než".
Ćást prepared dotazu: ... WHERE "timestamp" >= ?::timestamp without time zone AND "timestamp" <= ?::timestamp without time zone'

Kde za ? dosazuje PDO data a časy např.: 2015-04-02 17:23:45
Kde dělám chybu? Zkoušel jsem použít jen ?, pak "?::timestamp without time zone", ale nic nefunguje korektně. Vždy mi to vrátí jen řádky kdy čas je větší a menší než, nikdy kdy je roven zadanému.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.4.2015 01:01 Juraj
Rozbalit Rozbalit vše Re: Jak v postgresql porovnám sloupec je menší nebo roven než timestamp without timezone
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skus to prepisat ako BETWEEN AND: http://www.postgresql.org/docs/9.1/static/functions-comparison.html
3.4.2015 01:34 vasek
Rozbalit Rozbalit vše Re: Jak v postgresql porovnám sloupec je menší nebo roven než timestamp without timezone
Pořád stejný výsledek. Navíc je jedno, zdali zadám dotaz přímo např. v pgAdminovi nebo spouštím v PHP kódu, výsledek vždy stejný a špatný.
3.4.2015 05:20 Matlák
Rozbalit Rozbalit vše Re: Jak v postgresql porovnám sloupec je menší nebo roven než timestamp without timezone
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jaké hodnoty má ten sloupec v tabulce? Není tam spíš něco jako "2015-04-02 17:23:45.196605" ? Pak samozřejmě porovnání na "=" nemůže fungovat, musel by ses trefit do té mikrosekundy.

Koukni pořádně do té tabulky a případně zkus do té podmínky fláknout date_trunc('seconds', timestamp) místo přímého porovnání. Samozřejmě to bude o dost pomalejší, kvůli tomu že plánovač pak nebude moci využít indexy (pokud v tabulce nějaké jsou a pokud je tam dost řádků na to aby se to projevilo).
4.4.2015 18:00 vasek
Rozbalit Rozbalit vše Re: Jak v postgresql porovnám sloupec je menší nebo roven než timestamp without timezone
Jo to bude tím, díky. Myslel jsem že se to takhle zpracuje automaticky. Jinak myslím, že když vytvořím funkční index s date_trunc, tak to pak pomalejší ani nebude - pokud to takhle vytvořit půjde.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.