【问题标题】:Datediff function adds startdate day also to the outputDatediff 函数也将 startdate 日期添加到输出中
【发布时间】:2013-07-02 05:41:03
【问题描述】:

我在 Report Builder 1.0 中有一个报告,其中我编写了一个公式来计算 startdate 和 enddate 之间的天数。为此,我以这种方式使用了DATEDIFF 函数:

DATEDIFF(DAY, TODAY(), column from table which has end date)

假设,如果今天的日期是 1 July 2013 并且列将结束日期发送为 10 July 2013,那么 DATEDIFF 函数将返回“10 天”,而它应该将输出返回为值“9 天”。为什么返回 10 天而不是 9 天?

【问题讨论】:

    标签: reporting-services reportbuilder


    【解决方案1】:

    在 Sql Server 中执行这个,你会得到 9 天:

    select DATEDIFF(day, '2013-07-01', '2013-07-10')
    

    将其用作数据集:

    select CAST('2013-07-01' AS DateTime) AS StartDate, CAST('2013-07-10 23:59:59' AS DateTime) AS EndDate
    

    然后在 SSRS 中使用这个表达式:

    =DateDiff(DateInterval.Day, Fields!StartDate.Value, Fields!EndDate.Value)
    

    即使使用时间组件,仍然产生 9 天。试试下面的表达式:

    =DateDiff(DateInterval.Day, DateTime.Today, Fields!EndDate.Value)
    

    您是否显示日期字段以确保您认为应该得到的就是实际得到的?例如,确保没有返回缓存数据。

    【讨论】:

    • DATEDIFF(DAY, TODAY(), TARGET FINISH(TARGETFINISH)) --- 这个公式是为我在报表生成器中创建的新字段编写的。我没有其他办法可以写出这个公式。 ///DAY - 一个争论,只能这样写。没有其他办法。 ///TODAY() - 我从报表生成器中可用的日期时间函数中获取了当前日期。 ///TARGET FINISH(TARGETFINISH) - 这是表中的一列,我从中获取值。 ----这整个公式给了我错误的计算。而不是 9 输出为 10。请帮助!
    • 只是为了清除问题----我在报表生成器中定义公式,而不是在 ssrs 中编写表达式。
    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多