使用ssrs以HH:MM格式计算两个日期之间的时差

时间:2016-03-16 07:33:56

标签: reporting-services time ssrs-2008-r2 ssrs-2012 fetchxml

我需要以HH:MM格式生成SSRS中两个日期之间的时差。我怎样才能实现这一目标?我的数据源是MS CRM FetchXML。

例如:Date1:​​01/01/2016 04:05 AM      Date2:01/03/2016 02:15 PM 时差应该是:58:10

此致 和Sandeep

3 个答案:

答案 0 :(得分:2)

我可能有点太晚但需要计算两次之间的经过时间。因此我偶然发现了这个链接

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/26d8b4fc-6862-42a0-ac7f-0caa93ba2fde/to-find-ellapse-time-in-ssrs-2008?forum=sqlreportingservices

以下表达对我有用。我还发现在SSRS中执行它比在SQL中更简单。

function twController(node,prop,arr,dur){
    var obj,first,second,xyz,i,v,tween,html,prev,starter;
    switch(node){
            case "camera": obj = camera; break;
            default: obj = scene.getObjectByName(node);
    }
    xyz = "x,y,z".split(",");
    $.each(arr,function(i,v){
        first = obj[prop];
        second = {};
        $.each(v,function(i,v){
            second[xyz[i]] = v;
        })
        tween = new TWEEN.Tween(first)
        .to(second, dur)
        .onUpdate(function(){
            $.each(xyz,function(i,v){
                obj[prop][xyz[i]] = first[xyz[i]];
            })
        })
        .onComplete(function(){
            html = [];
            $.each(xyz,function(i,v){
                html.push(Math.round(first[xyz[i]]));
            })
            $("#camPos").html(html.join(","))
        })
        if(i >0){
            tween.delay(250);
            prev.chain(tween);
        }
        else{
            starter = tween;
        }
        prev = tween;
    });
    starter.start();
}

上述结果将是HH:MM:SS

答案 1 :(得分:1)

试试这个:

=DateDiff(
DateInterval.Hour,CDATE("01/01/2016 04:05 AM"), CDATE("03/01/2016 02:15 PM")
) & ":" &
DateDiff(
DateInterval.Minute,CDATE("01/01/2016 04:05 AM"), CDATE("03/01/2016 02:15 PM")
) Mod 60

它将产生58:10

用包含日期时间值的字段或参数替换CDATE()。

如果有帮助,请告诉我。

答案 2 :(得分:0)

编写自定义代码以计算两个日期之间的时差,并返回一个字符串,如期待HH:MM之类

    Public Function GetTimeDifference(ByVal dt1 AS DATETIME,ByVal dt2 AS DATETIME) AS String
    Dim Mn AS Integer=DateDiff("n",dt1,dt2)
    Dim HH AS Integer=Mn /60
    Dim MM AS Integer=Mn Mod 60
    Return HH.ToString() & ":" & MM.ToString()
    End Function

现在将此函数称为类似

的表达式
=Code.GetTimeDifference(Parameters!startDate.Value,Parameters!endDate.Value)