Crystal Report中的日期

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

[开始之前,我想对不起,因为我是CR的新手,所以我的问题可能有点傻。

我在Crystal Report版本14.0.12中添加了datediff公式,并且在某些特殊情况下返回错误的结果。

公式如下:

DATEDIFF('M',{START_DATE},{END_DATE})

如果开始日期为2018-05-01,结束日期为2020-04-30,则结果应为“ 24”,但它返回“ 23”。看来日期范围是在第一天还是最后一天,则出现上述错误。

此外,其他公式还有另一个问题。

为了获得某些日期字段的“下一个日期”,我将公式放在下面,

DATE(YEAR({date_field}),MONTH({date_field}),DAY({date_field} +1))

并且当日期字段是特定月份的“结束日期”时,会有一个问题。

例如,如果日期字段为2020-03-31,则预期结果为2020-04-01,但我的公式返回的格式类似于“ 2020-03-01”。

请让我知道该怎么做才能获得正确的结果。

非常感谢:)

crystal-reports datediff
2个回答
0
投票

关于DateDiff()功能。

问问题时您可能打错字了吗?该函数的第一个参数是intervalType,它是一个String表达式,因此应包含在双引号中;您的问题中有单引号。使用单引号应引发语法错误。另外,月份的intervalType应该表示为小写的“ m”。

关于您将日期增加1天的问题,我建议使用DateAdd(intervalType, nIntervals, startDateTime)功能来完成此任务。尝试使用以下公式:

DateAdd("d", 1, {date_field})

但是,请注意,此函数将返回DateTime值,因此,如果要从返回的日期中删除时间戳,则需要使用Date()函数将整个函数转换为Date数据类型,如下所示:

Date(DateAdd("d", 1, {date_field}))

0
投票

单引号就可以了。问题的根源在于,将1加到31是32(由于日期逻辑,它被换回1)。

以上建议使用DateAdd()是正确的解决方案。

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