И двете решениявключват последния ден на предходния месец и същовключва всичко от "днес".
За date
колона:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Можете да извадите обикновени целочислени стойности от date
(но не от timestamp
) за изваждане на дните. Това е най-простият и бърз начин.
За timestamp
колона:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Имайте предвид, че използвам <
оператор за второто условие, за да получите точни резултати (~ "преди утре").
Не предавам към date
във втората заявка. Вместо това добавям interval '1 day'
, за да избегнете хвърляне напред-назад.
Разгледайте видовете дата/час и функции в ръководството.