Я создаю отчет в MS SQL Server Reporting Services и потребности установить параметры отчета о Запуске и Дате окончания по умолчанию, чтобы быть первыми и последними датами предыдущего календарного месяца и нуждаться в помощи.
Отчет сгенерирован в 2-й календарный день месяца, и мне нужны значения для:
В предыдущем календарном месяце
- первый день
- в последний день
Я работал с DateAdd, но не был успешен при создании Выражения (в VB.NET насколько я понимаю). Я был бы очень признателен за любую справку, которую можно дать мне!
Dim thisMonth As New DateTime(DateTime.Today.Year, DateTime.Today.Month, 1)
Dim firstDayLastMonth As DateTime
Dim lastDayLastMonth As DateTime
firstDayLastMonth = thisMonth.AddMonths(-1)
lastDayLastMonth = thisMonth.AddDays(-1)
я не знаком с SSRS, но можно получить начало и конец предыдущего месяца в VB.Net использование конструктор DateTime
, как это:
Dim prevMonth As DateTime = yourDate.AddMonths(-1)
Dim prevMonthStart As New DateTime(prevMonth.Year, prevMonth.Month, 1)
Dim prevMonthEnd As New DateTime(prevMonth.Year, prevMonth.Month, DateTime.DaysInMonth(prevMonth.Year, prevMonth.Month))
( yourDate
может быть любым объект DateTime
, такой как DateTime. Сегодня
или #12/23/2003#
)
на C#:
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-1)
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)
У меня есть некоторые трудности, переводя фактический VB.Net в подмножество выражения, которое использует SSRS. Вы обязательно вдохновили меня, хотя и это то, с чем я придумал.
StartDate
=dateadd("d",0,dateserial(year(dateadd("d",-1,dateserial(year(Today),month(Today),1))),month(dateadd("d",-1,dateserial(year(Today),month(Today),1))),1))
End Date
=dateadd("d",0,dateserial(year(Today),month(Today),1))
Я знаю, что это немного рекурсивно для Startdate (первый день прошлого месяца). Здесь что-то, что я здесь не хватает? Это строго датальные поля (то есть нет времени), но я думаю, что это должно захватить скачок года и т. Д.
Как я сделал?
Dim aDate As DateTime = #3/1/2008# 'sample date
Dim StartDate As DateTime = aDate.AddMonths(-1).AddDays(-(aDate.Day - 1))
Dim EndDate As DateTime = StartDate.AddDays(DateTime.DaysInMonth(StartDate.Year, StartDate.Month) - 1)
'to access just the date portion
' StartDate.Date
' EndDate.Date