【问题标题】:SSRS Calculate duration between two datesSSRS 计算两个日期之间的持续时间
【发布时间】:2015-05-06 19:25:20
【问题描述】:

如何在SSRS表达式中编写下面的SSRS计算

下面的实际计算示例 =((deldate+deltime) –(orddate+ordtime))*24

deldate     delTime  orddate    ordTime  *24
13/01/2015  14:25   14/01/2015  13:55    23.50
20/01/2015  12:00   20/01/2015  17:02    5.03

这在 SQL Toad 中有效,但在 SSRS 中无效

(TO_DATE(TO_CHAR(A.DELDATE,'DD/MM/YYYY') ||' '|| TO_CHAR(A.DELTIME,'HH24:MI'),'DD/MM/YYYY HH24:MI') - TO_DATE(TO_CHAR(A.ORDDATE,'DD/MM/YYYY') ||' '|| TO_CHAR(A.ORDTIME,'HH24:MI'),'DD/MM/YYYY HH24:MI'))*24 AS "DiffinHours",

【问题讨论】:

  • SSRS 中的“SS”代表“SQL Server”。当然,该工具可以连接到其他数据库,但这不是典型的配置。您的实际数据库是 Oracle(如代码所示)还是 SQL Server(如工具所示)?
  • 是的,它是一个 SQL Server
  • 每个字段的数据类型是什么。还有你用的是哪个版本的sql server?
  • 数据类型 = 所有 4 个字段的日期 deldate、deltime、orddate 和 ordtime

标签: sql reporting-services ssrs-2008-r2 ssrs-2012


【解决方案1】:

TO_CHARs 更改为Format,将TO_DATEs 更改为CDate,并使用DateDiff 而不是减法。要获得十进制小时数,请找出分钟差并除以 60.0:

=DateDiff(DateInterval.Minute, 
          CDate(Format(Fields!deldate.Value, "MM/dd/yyyy") & " " & Format(Fields!deltime.Value, "HH:mm")), 
          CDate(Format(Fields!orddate.Value, "MM/dd/yyyy") & " " & Format(Fields!ordtime.Value, "HH:mm"))
         ) / 60.0

【讨论】:

  • 我在表达式中遇到运行时错误 - 从字符串“29/01/2015 14:00”到类型“日期”的转换无效。
  • 我根据上述日期格式猜测您的系统/报告设置需要采用 dd/mm/yy 格式。如果这些设置实际上是 en-US,则需要 mm/dd/yy;更新了我的答案。
  • 同样的问题 - [rsRuntimeErrorInExpression] 包含错误:从字符串“00/03/2015 21:45”到类型“日期”的转换无效。
  • 您需要查看源查询中的数据;我不确定如何在没有月份的情况下创建日期类型的字段。
  • 好的 - 这似乎是部分工作但是,为什么我会在某些结果和一些奇怪的数字格式上得到 #error 如果超过 2 或 4 天?
猜你喜欢
  • 1970-01-01
  • 2020-06-28
  • 2014-02-28
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多