Найдите первый и последний день в течение предыдущего календарного месяца в SQL Server Reporting Services (VB.Net)

Я создаю отчет в MS SQL Server Reporting Services и потребности установить параметры отчета о Запуске и Дате окончания по умолчанию, чтобы быть первыми и последними датами предыдущего календарного месяца и нуждаться в помощи.

Отчет сгенерирован в 2-й календарный день месяца, и мне нужны значения для:

В предыдущем календарном месяце
- первый день
- в последний день

Я работал с DateAdd, но не был успешен при создании Выражения (в VB.NET насколько я понимаю). Я был бы очень признателен за любую справку, которую можно дать мне!

31
задан Jaymin 18 October 2019 в 08:59
поделиться

5 ответов

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)
16
ответ дан 27 November 2019 в 21:24
поделиться

я не знаком с 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#)

4
ответ дан 27 November 2019 в 21:24
поделиться

на C#:

new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-1)
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)
3
ответ дан 27 November 2019 в 21:24
поделиться

У меня есть некоторые трудности, переводя фактический 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 (первый день прошлого месяца). Здесь что-то, что я здесь не хватает? Это строго датальные поля (то есть нет времени), но я думаю, что это должно захватить скачок года и т. Д.

Как я сделал?

3
ответ дан 27 November 2019 в 21:24
поделиться
        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
0
ответ дан 27 November 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: