【发布时间】:2016-02-11 19:45:17
【问题描述】:
如果在其他地方讨论过这个问题,请原谅我,我只是不知道如何问这个问题。 我的问题是;如何计算大于 24 小时的时间间隔。我有一个由 2 个其他公式组成的公式,如下所示:
Time({%EMS_Departed_DateTime}) - Time ({%Pt_Arrival_DateTme})
之所以创建它,是因为我们在将日期和时间作为单独的值存储在数据库中时遇到了问题。 SQL 表达式如下所示:
CAST(
CONVERT(Varchar(10),PT_ArrivedAtED,112)+ ' ' +
CONVERT(Varchar(8),PT_ArrivedAtED_Time) AS DateTime)
我需要的是一个时间间隔的计算,表示为:
HH:mm:ss
我做了一些研究,发现了这个:
WhilePrintingRecords;
NumberVar TotalSec :=({@LengthofStay_Time});
NumberVar Days := Truncate (TotalSec / 86400);
NumberVar Hours := Truncate (Remainder ( TotalSec , 86400) / 3600) ;
NumberVar Minutes := Truncate (Remainder ( TotalSec , 3600) / 60) ;
NumberVar Seconds := Remainder (TotalSec , 60) ;
Totext (Days , '00' ) + ':' +
Totext ( Hours , '00' ) + ':' +
Totext ( Minutes , '00' ) + ':' +
Totext ( Seconds , '00' )
这几乎可行。在所有这些被计算并转换为显示时间之后,我看到的是小时、分钟和秒。它不会计算天数(或者,最好是总小时数(即 2 天 = 48 小时)、分钟和秒数。我正在寻找关于如何编写公式或 SQL 表达式的建议/解决方案将计算从{%Pt_Arrival_DateTme} 到{%EMS_Departed_DateTime} 的时间间隔,显示为 HH:mm:ss。提前感谢您的指导和建议。
【问题讨论】:
-
我想我没有提到最终的公式确实显示了计算的结果,但只是小时、分钟和秒,不超过 24 小时。 IE。应该显示为 31:25:42 的时间间隔显示为 7:25:42,因为它不会超过 24 小时。即使显示为 01:07:25:42 (dd:hh:mm:ss),我也会很高兴
标签: sql-server time crystal-reports