Crystal Report中的Datediff公式结果计算错误

问题描述 投票:0回答:2

在这里,我在水晶报告中使用以下公式来查找产品的老化情况。我已将制造日期作为 Default_Date 并将日期与当前日期进行比较。

datediff("d",CDate({Yarn_Packing_Weighment_Entry.Default_Date}),CurrentDate)

公式没有错误,但是当日期是从 1 号到 12 号时 - 差异结果是错误的

以及 13 日至 31 日之后 -

DOP 列日期是我与当前日期进行比较的日期。附上截图

有不对的地方请多多指教。预先感谢

crystal-reports datediff
2个回答
1
投票

我假设您的数据库字段 {Yarn_Packing_Weighment_Entry.Default_Date} 的格式为 DD/MM/YYYY。 CDATE 不适用于这些日期。它尝试这样做,但效果不太好。 我确信有很多不同的创意方法可以解决这个问题,但这是我的提议

datediff("d",
cdate(
split({Yarn_Packing_Weighment_Entry.Default_Date},"/")[2]
+"/"+
split({Yarn_Packing_Weighment_Entry.Default_Date},"/")[1]
+"/"+
split({Yarn_Packing_Weighment_Entry.Default_Date},"/")[3]
),
currentdate
)

0
投票

首先在自己的报告中创建一个具有适当名称的报告自定义函数!

使用此代码创建函数

Function (DateTimeVar StartDate,DateTimeVar EndDate )

本地 NumberVar YY := Int(DateDiff("D", StartDate, EndDate)/365.25); 本地 NumberVar MM := Int(remainder(DateDiff("D",StartDate,EndDate),365.25)/30.4375); 本地 NumberVar DD := Int(IF(Day (EndDate) < Day(StartDate)) Then (Day(DateSerial(year(StartDate), Month(StartDate)+1,1-1)) - Day(StartDate) + Day(EndDate)) else (Day(EndDate) - Day(StartDate))); ToText(YY, "00") & ":"& ToText(MM, "00") & ":"& ToText(DD, "00")

函数(DateTimeVar 开始日期,DateTimeVar 结束日期) 本地 NumberVar YY := Int(DateDiff("D", StartDate, EndDate)/365.25); 本地 NumberVar MM:= Int(remainder(DateDiff("D",StartDate,EndDate),365.25)/30.4375); 本地 NumberVar DD := Int(IF(Day (EndDate) < Day(StartDate)) Then (Day(DateSerial(year(StartDate), Month(StartDate)+1,1-1)) - Day(StartDate) + Day(EndDate)) else (Day(EndDate) - Day(StartDate))); IIF (YY > 0,ToText(YY, "00") & "eQi " ,"" ) & IIF (MM > 0,ToText(MM, "00") & "gvm " ,"" ) & IIF (DD > 0,ToText(DD, "00") & "w`b " ,"" )

有两种方式已显示!

© www.soinside.com 2019 - 2024. All rights reserved.