С этим выражением:
iif(
day(date()) >= 24,
dateserial(year(date()), month(date()), 24),
dateserial(year(dateadd('m', -1, date())), month(dateadd('m', -1, date())), 24)
)
вы можете получить дату начала вашего состояния (хотя я не уверен насчет знака >=
, возможно, это должно быть просто >
?), так что используйте это так:
select t.col1, t.col2, ...
from (
select *,
iif(
day(date()) >= 24,
dateserial(year(date()), month(date()), 24),
dateserial(year(dateadd('m', -1, date())), month(dateadd('m', -1, date())), 24)
) as start_date
from tablename
) as t
where t.date_column between t.start_date and dateadd('m', 1, t.start_date)