Рэндалл, вот выражения VB, которые я нашел для работы в SSRS, чтобы получить первый и последний дни любого месяца, используя текущий месяц в качестве ориентира:
Первый день прошлого месяца:
=dateadd("m",-1,dateserial(year(Today),month(Today),1))
Первый день этого месяца:
=dateadd("m",0,dateserial(year(Today),month(Today),1))
Первый день следующего месяца:
=dateadd("m",1,dateserial(year(Today),month(Today),1))
Последний день прошлого месяца:
=dateadd("m",0,dateserial(year(Today),month(Today),0))
Последний день этого месяца:
=dateadd("m",1,dateserial(year(Today),month(Today),0))
Последний день следующего месяца:
=dateadd("m",2,dateserial(year(Today),month(Today),0))
Документация MSDN для функции VisualBasic DateSerial(year,month,day)
объясняет, что функция принимает значения вне ожидаемого диапазона для параметров year
, month
и day
. Это позволяет вам указать полезные значения, относящиеся к дате. Например, значение 0 для Day
означает «последний день предыдущего месяца». Это имеет смысл: это день до первого дня текущего месяца.