在SQL Server Reporting Services(VB.Net)中查找上一个日历月的第一天和最后一天

Ran*_*all 31 vb.net calendar date reporting-services

我正在MS SQL Server Reporting Services中创建一个报告,并且需要将默认的"开始日期"和"结束日期"报告参数设置为上一个日历月的第一个和最后一个日期,并需要帮助.

该报告是在该月的第二个日历日生成的,我需要以下值:

上一个日历月
- 第一天
- 最后一天

我一直在使用DateAdd,但是没有成功创建一个Expression(在我理解的VB.NET中).我真的很感激你能给我的任何帮助!

Ray*_*Ray 64

Randall,这里是我发现在SSRS中工作的VB表达式,用于获取任何月份的第一天和最后几天,使用当前月份作为参考:

上个月的第一天:

=dateadd("m",-1,dateserial(year(Today),month(Today),1)) 
Run Code Online (Sandbox Code Playgroud)

本月第一天:

=dateadd("m",0,dateserial(year(Today),month(Today),1)) 
Run Code Online (Sandbox Code Playgroud)

下个月的第一天:

=dateadd("m",1,dateserial(year(Today),month(Today),1)) 
Run Code Online (Sandbox Code Playgroud)

上个月的最后一天:

=dateadd("m",0,dateserial(year(Today),month(Today),0))
Run Code Online (Sandbox Code Playgroud)

本月最后一天:

=dateadd("m",1,dateserial(year(Today),month(Today),0))
Run Code Online (Sandbox Code Playgroud)

下个月的最后一天:

=dateadd("m",2,dateserial(year(Today),month(Today),0))
Run Code Online (Sandbox Code Playgroud)

所述的的VisualBasic MSDN文档DateSerial(year,month,day)功能解释该函数接受的预期范围外的值year,monthday参数.这允许您指定有用的日期相对值.例如,值为0 Day表示"前一个月的最后一天".这是有道理的:那是当月第1天的前一天.

  • 这个月的最后一天和下个月的最后一天是不正确的; 两者都假设未来几个月的天数与前一个月相同.请参阅@Stephanie Grice的答案,以便在SSRS表达式中更好地实现此目的. (6认同)

小智 35

这些功能对我非常有帮助 - 特别是在设置订阅报告时; 但是,我注意到在使用上面公布的当月最后一天功能时,只要正在进行的月份与当前月份具有相同的天数,它就会起作用.我已经完成并测试了这些修改,并希望它们在未来帮助其他开发人员:

日期公式:查找上个月的第一天:

DateAdd("m", -1, DateSerial(Year(Today()), Month(Today()), 1))
Run Code Online (Sandbox Code Playgroud)

查找上个月的最后一天:

DateSerial(Year(Today()), Month(Today()), 0)
Run Code Online (Sandbox Code Playgroud)

查找本月的第一天:

DateSerial(Year(Today()),Month(Today()),1)
Run Code Online (Sandbox Code Playgroud)

查找当月的最后一天:

DateSerial(Year(Today()),Month(DateAdd("m", 1, Today())),0)
Run Code Online (Sandbox Code Playgroud)


Dav*_*d M 16

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)
Run Code Online (Sandbox Code Playgroud)

  • +1 用于将“参考日期”存储在变量中,这消除了(不太可能,但可能)计算第一天和最后一天之间存在月移的情况。 (2认同)

Jim*_*mmy 3

在 C# 中:

new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-1)
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)
Run Code Online (Sandbox Code Playgroud)

  • 您只需将“new”更改为“New”并命名为VB.NET即可 (2认同)