请原谅我,如果在其他地方讨论这个问题,我只是不知道如何提问。 我的问题是;如何计算大于24小时的时间间隔。我有一个由2个其他公式组成的公式,如下所示:
Time({%EMS_Departed_DateTime}) - Time ({%Pt_Arrival_DateTme})
这是创建的,因为我们遇到的问题是Dates和Times被存储为数据库中的单独值。 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的时间间隔。提前感谢您的指导和建议。
答案 0 :(得分:0)
水晶
WhilePrintingRecords;
NumberVar TotalSec :=(60*60)*2;
NumberVar Hours := Truncate (Remainder ( TotalSec , 86400) / 60) ;
NumberVar Minutes := Truncate (Remainder ( TotalSec , 3600) / 60) ;
NumberVar Seconds := Remainder (TotalSec , 60) ;
Totext ( Hours , '00' ) + ':' +
Totext ( Minutes , '00' ) + ':' +
Totext ( Seconds , '00' )
SQL
https://stackoverflow.com/questions/1262497/how-to-convert-seconds-to-hhmmss-using-t-sql
答案 1 :(得分:0)
尝试我的ElapsedTime()功能:
// Convert seconds to a string in the format DD.HH:MM:SS
Function (NumberVar interval)
NumberVar Days := Truncate(interval / 86400);
NumberVar Hours := Truncate(Remainder(interval, 86400) / 3600);
NumberVar Minutes := Truncate(Remainder(interval, 3600) / 60);
NumberVar Seconds := Remainder(interval, 60);
Totext(Days,'##') +'.'+ Totext(Hours,'00') +':'+ Totext(Minutes,'00') +':'+ Totext(Seconds,'00')
用法:ElapsedTime ((24*60*60)+60)
结果:1.00:01:00
**编辑**
尝试ElapsedTime( {%EMS_Departed_DateTime} - {%Pt_Arrival_DateTme} )