Не проще ли просто проверить, в каком месяце / неделе вы хотите, чтобы он был в то время?
Из ваших примеров:
SELECT * FROM TABLE
WHERE curr_date BETWEEN firstoflastmonth AND endoflasthmonth;
Это станет (с использованной функцией month )
SELECT * FROM TABLE
WHERE month(curr_date) = month(dateadd("m",-1,Date()));
Это сравнивает месяц вашего curr_date с месяцем Date (текущая дата) минус один месяц, то есть последний месяц.
Это также можно сделать, используя datediff :
SELECT * FROM TABLE
WHERE DateDiff ( "m", curr_date, date()) = 1
AND curr_date < date();
Последняя строка добавлена, чтобы удостовериться, что даты через месяц не выбраны.
То же самое можно применить к другим запросам, используя найденную функцию даты здесь
Ссылки, использованные для справочного листа, предоставленного Ричардом Калаханом