[开始之前,我想对不起,因为我是CR的新手,所以我的问题可能有点傻。
我在Crystal Report版本14.0.12中添加了datediff公式,并且在某些特殊情况下返回错误的结果。
如果开始日期为2018-05-01,结束日期为2020-04-30,则结果应为“ 24”,但它返回“ 23”。看来日期范围是在第一天还是最后一天,则出现上述错误。
此外,其他公式还有另一个问题。
并且当日期字段是特定月份的“结束日期”时,会有一个问题。
例如,如果日期字段为2020-03-31,则预期结果为2020-04-01,但我的公式返回的格式类似于“ 2020-03-01”。
请让我知道该怎么做才能获得正确的结果。
非常感谢:)
关于DateDiff()
功能。
问问题时您可能打错字了吗?该函数的第一个参数是intervalType,它是一个String表达式,因此应包含在双引号中;您的问题中有单引号。使用单引号应引发语法错误。另外,月份的intervalType应该表示为小写的“ m”。
关于您将日期增加1天的问题,我建议使用DateAdd(intervalType, nIntervals, startDateTime)
功能来完成此任务。尝试使用以下公式:
DateAdd("d", 1, {date_field})
但是,请注意,此函数将返回DateTime值,因此,如果要从返回的日期中删除时间戳,则需要使用Date()
函数将整个函数转换为Date数据类型,如下所示:
Date(DateAdd("d", 1, {date_field}))
单引号就可以了。问题的根源在于,将1加到31是32(由于日期逻辑,它被换回1)。
以上建议使用DateAdd()是正确的解决方案。