所以我有一个非常愚蠢的问题,但出于某种原因我的'问题'不是 正在工作 。
真的很简单。 SSRS Tablix中的一个字段是使用SQL函数DateAdd:
计算的截止日期=DateAdd(DateInterval.Day, (Int(Fields!TMinus.Value) * 7), Parameters!StartDate.Value)
TMinus 是一个模拟周数的负整数, StartDate 是活动开始的日期。
我在VB.NET中使用此公式计算相同的事情来设置行单元格中活动的DueDate:
Dim intTMinus As Integer = CInt(dataItem.GetDataKeyValue("TMinus").ToString)
CType(dataItem.FindControl("RlblDue"), RadLabel).Text = CDate(DateAdd(DateInterval.Day, (intTMinus * 7), dtStartDate)).ToString
问题是SSRS报告显示的日期与网格不同,即使我使用了硬编码值来尝试在报告中找到罪魁祸首。
报告中的此计算:
=DateAdd(DateInterval.Day, (Int(-40) * 7), '12/09/2016')
在网格中显示日期:2015年12月7日,但在报告
上显示2016年3月4日答案 0 :(得分:0)
注意DateAdd
参数数据类型必须分别是DateInterval,Double和DateTime。您正在为第三个参数传递字符串'12/09/2016'
,但它需要DateTime
。顺便说一句,SSRS中的字符串必须用双引号括起来。
修复表达式后,它应该是这样的:
=DateAdd(DateInterval.Day, (Int(-40) * 7), CDATE("2016-09-12"))
返回:07/12/2015
作为VB中的网格。
注意CDATE("2016-09-12")
会将日期字符串转换为DateTime
值。
检查您的参数是否设置为Date/Time
类型。
如果有帮助,请告诉我。