Hello: Below is a sample case that exhibits a behavior that I can't explain: -- create the table create table ts (t timestamp without time zone); -- populate insert into ts(t) values ('2022-07-16 00:22:06.974000'); insert into ts(t) values ('2022-07-16 00:22:06.974000'); insert into ts(t) values ('2022-07-16 00:22:06.974000'); -- This one return expected results select * from ts where t::date between '2022-07-16'::Date - make_interval(days => 30) and '2022-07-16'::Date; t ------------------------- 2022-07-16 00:22:06.974 2022-07-16 00:22:06.974 2022-07-16 00:22:06.974 (3 rows) -- This one doesn't return anything (unexpected) select * from ts where t between '2022-07-16'::Date - make_interval(days => 30) and '2022-07-16'::Date; t --- (0 rows) -- version select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 14.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-15), 64-bit (1 row) Regards, Ludwig Lim