试图将从约会时间的总分钟转换为几天,剩余时间,以及Crystal Reports中的分钟数

时间:2015-05-05 19:39:46

标签: crystal-reports datediff

我在Windows 7 Pro上使用Crystal Reports 2013 SP5从Oracle数据库中提取。

我正在尝试在水晶报表中编写一个公式,如果小于24,则返回剩余小时的总天数;如果两个日期时间字段之间的日期小于60,则返回剩余的小时数。

到目前为止,我已设法将总分钟数显示为天,小时和分钟:

local numbervar tm := datediff('n',{table.date1},{table.date2},0);
local numbervar h := truncate(tm/60,0);
local numbervar d := truncate(tm/1440,0);

local stringvar tm_d := totext(d,0,"") + ' days ';
local stringvar tm_h := totext(h,0,"") + ' hours ';
local stringvar tm_m := totext(tm,0,"") + ' minutes ';

local stringvar tm_string := tm_d & tm_h & tm_m

返回:183天4393小时263633分钟

183天= = 4393小时= = 263633分钟

我需要它做的是显示183天(不是四舍五入)和任何剩余小时(不是四舍五入)和任何剩余的分钟(不是四舍五入)所以它看起来像这样:

table.date1和table.date2之间的区别是:

183天4小时23分钟(仅使用随机小时和分钟)

2 个答案:

答案 0 :(得分:2)

也试试这个。

local numbervar tt := datediff('n',{table.DATE1},{table.DATE2});
local numbervar d := truncate(tt/1440,0);
local numbervar h := truncate(remainder(tt,1440)/60,0);
local numbervar m := truncate(remainder(tt,60),0);
local stringvar tt_d := if d=0 then "" else totext(d,0,"") + 'd ';
local stringvar tt_h := if h = 0 then "" else (totext(h,0,"")) + 'h ';
local stringvar tt_m := totext(m,0,"") + 'm ';
local stringvar tt_string := tt_d & tt_h & tt_m

参考链接:

http://www.crystalreportsbook.com/Forum/forum_posts.asp?TID=15879

http://www.crystalreportsbook.com/Forum/forum_posts.asp?TID=10279

http://www.experts-exchange.com/Database/Reporting/Crystal_Reports/Q_24014196.html

答案 1 :(得分:0)

没有您的系统经验,但绝对需要这个:

totalMinutes = 263633 
days = floor (totalMinutes /(24*60))
hours  = floor (totalMinutes %(24 * 60) /(60))
minutes = floor (totalMinutes % 60)


where % is MOD (ex: 15 MOD 4 = 3)

据我所知,floortruncate相同,而快速查询则表示MOD为MOD,如A MOD B