Obě řešení zahrnují poslední den předchozího měsíce a také zahrnout celý „dnes“.
Na date sloupec:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Od date můžete odečíst prosté celočíselné hodnoty (ale ne z timestamp ) odečíst dny. Toto je nejjednodušší a nejrychlejší způsob.
Pro timestamp sloupec:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Všimněte si, že používám < operátor pro druhou podmínku, abyste získali přesné výsledky (~ "do zítřka").
Nevysílám do date v druhém dotazu. Místo toho přidám interval '1 day' , abyste se vyhnuli přehazování tam a zpět.
Podívejte se na typy data/času a funkce v příručce.