如何计算两个日期的天数差?现有代码结果异常求修正
计算两个日期的天数差解决方案
原代码问题分析
你的代码存在两个关键错误:
- 已经通过
select a.prdt :plannedDate从数据库获取了计划日期,但后续用未初始化的变量调用utc.to.date(...)重新赋值plannedDate,导致原本正确的计划日期被覆盖为无效值。 - 直接使用日期减法在部分跨年月场景下可能存在计算偏差,建议使用系统内置的日期差函数保证准确性。
正确的计算脚本
function extern void ext.curdate.calculate() { extern domain tcdate today, plannedDate long days_diff select a.prdt :plannedDate from tdsls400 a where a.orno = {:tdsls400.orno} selectdo today = date.num() // 用date.diff计算两个日期的天数差,date1 - date2的结果 days_diff = date.diff(today, plannedDate) ext.curdate = days_diff endselect }
替代方案(若系统不支持date.diff)
如果你的环境无法使用date.diff()函数,只需去掉覆盖plannedDate的错误代码,直接用日期减法即可:
function extern void ext.curdate.calculate() { extern domain tcdate today, plannedDate select a.prdt :plannedDate from tdsls400 a where a.orno = {:tdsls400.orno} selectdo today = date.num() ext.curdate = today - plannedDate endselect }
内容的提问来源于stack exchange,提问作者Faridz Kurnia Chandra
相关产品推荐
相关产品推荐

