Crystal 报告中的日期差异
Datediff in Crystal Report
在开始之前,我想说抱歉,我的问题可能有点傻,因为我是 CR 的新手。
我在 Crystal Report ver 14.0.12 中加入了 datediff 公式,
它 returns 对于某些特殊情况不正确的结果。
公式如下;
DATEDIFF('M',{START_DATE},{END_DATE})
如果开始日期是 2018-05-01,结束日期是 2020-04-30,结果应该是 '24',
但它 returns '23'。
好像日期范围在第一天或最后一天,它有上述错误。
此外,我还有其他公式的问题。
我在下面输入公式以获得特定日期字段的'next date',
日期(年({date_field}),月({date_field}),日({date_field}+1))
当日期字段是某个月的 'end date' 时出现问题。
例如日期字段为2020-03-31,预期结果为2020-04-01,
但是我的公式 returns 就像“2020-03-01”。
请告诉我我应该怎么做才能得到正确的结果。
非常感谢:)
关于您的 DateDiff()
功能。
您提问的时候有没有打错字?该函数的第一个参数是 intervalType 并且是一个字符串表达式,因此它应该包含在双引号内;你的问题中有单引号。使用单引号会引发语法错误。另外,Month 的 intervalType 应表示为小写 "m".
关于将日期加 1 天的问题,我建议使用 DateAdd(intervalType, nIntervals, startDateTime)
函数来完成此任务。试试这个公式:
DateAdd("d", 1, {date_field})
但是,请注意此函数将 return 一个 DateTime 值,因此如果您想从 returned 的日期中删除时间戳,您将需要强制转换整个函数使用 Date()
函数作为 Date 数据类型,如下所示:
Date(DateAdd("d", 1, {date_field}))
单引号就可以了。问题的根源是将 1 添加到 31 是 32(由于日期逻辑,它会回绕到 1)。
上面关于使用 DateAdd() 的建议是正确的解决方案。
在开始之前,我想说抱歉,我的问题可能有点傻,因为我是 CR 的新手。
我在 Crystal Report ver 14.0.12 中加入了 datediff 公式, 它 returns 对于某些特殊情况不正确的结果。
公式如下;
DATEDIFF('M',{START_DATE},{END_DATE})
如果开始日期是 2018-05-01,结束日期是 2020-04-30,结果应该是 '24', 但它 returns '23'。 好像日期范围在第一天或最后一天,它有上述错误。
此外,我还有其他公式的问题。
我在下面输入公式以获得特定日期字段的'next date',
日期(年({date_field}),月({date_field}),日({date_field}+1))
当日期字段是某个月的 'end date' 时出现问题。
例如日期字段为2020-03-31,预期结果为2020-04-01, 但是我的公式 returns 就像“2020-03-01”。
请告诉我我应该怎么做才能得到正确的结果。
非常感谢:)
关于您的 DateDiff()
功能。
您提问的时候有没有打错字?该函数的第一个参数是 intervalType 并且是一个字符串表达式,因此它应该包含在双引号内;你的问题中有单引号。使用单引号会引发语法错误。另外,Month 的 intervalType 应表示为小写 "m".
关于将日期加 1 天的问题,我建议使用 DateAdd(intervalType, nIntervals, startDateTime)
函数来完成此任务。试试这个公式:
DateAdd("d", 1, {date_field})
但是,请注意此函数将 return 一个 DateTime 值,因此如果您想从 returned 的日期中删除时间戳,您将需要强制转换整个函数使用 Date()
函数作为 Date 数据类型,如下所示:
Date(DateAdd("d", 1, {date_field}))
单引号就可以了。问题的根源是将 1 添加到 31 是 32(由于日期逻辑,它会回绕到 1)。
上面关于使用 DateAdd() 的建议是正确的解决方案。