2015-05-06 64 views
1

我怎样写下面的后续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蟾蜍而不是在SSRS

之间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", 
+0

SSRS中的“SS”代表“SQL Server”。当然,该工具可以连接到其他数据库,但这不是典型的配置。您的实际数据库Oracle(如代码所示)还是SQL Server(如工具所建议的)? –

+0

是的,它是一个SQL Server –

+0

每个字段的数据类型是什么。你正在使用哪个版本的sql server? –

回答

2

更改TO_CHAR s到Format,TO_DATE s到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 
+0

我在表达式中收到运行时错误 - 从字符串“29/01/2015 14:00”到类型“Date”的转换无效。 –

+0

我根据上述日期格式猜出您的系统/报告设置需要使用dd/mm/yy格式。如果这些设置实际上是en-US,则需要mm/dd/yy;更新了我的答案。 – stubaker

+0

同样的问题 - [rsRuntimeErrorInExpression]包含错误:从字符串“00/03/2015 21:45”转换为键入“日期”无效。 –