【问题标题】:Trying to convert total minutes from a datediff to days, remaining hours, & minutes in Crystal Reports尝试将总分钟数从 datediff 转换为 Crystal Reports 中的天数、剩余小时数和分钟数
【发布时间】:2015-05-05 19:39:45
【问题描述】:

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

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

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

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 分钟(仅使用随机小时和分钟)

【问题讨论】:

    标签: crystal-reports datediff


    【解决方案1】:

    也试试这个。

    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

    【讨论】:

    • 天啊 Ajay2707,就是这样......!!!我已将此添加到我的示例表中,并包含您建议的链接。非常感谢您的帮助,回报是完美的!
    • 如果它是完美的,那么也接受答案。我给你 +1 投票,因为它每天都在使用。
    【解决方案2】:

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

    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

    【讨论】:

    • 谢谢 Nikita,我现在正在回家的路上,但我会在早上试试这个。
    猜你喜欢
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多