我被困在一个地方。 我在Ms Access中使用DateDiff它给了我正确的输出,比如
StartDate is 10-Sep-2016
EndDate is 15-Oct-2016
Total Days which I will get is 35
& months will i get is 1 Month
DateDiff('d',StartDate,EndDate)
**但是如果它在30天内被执行,我希望输出为2个月。 如果是61天,那么3个月&等等。
**IIFFF days diffrence is
29 Days then output should be 1 months
30 Days then output should be 1 months
32 Days then output should be 2 months
60 Days then output should be 2 months
62 Days then output should be 3 months**
是否可以在MsAccess的DateDiff中实现 或者是否有任何其他功能可用,以便我可以实现相同的输出。**
答案 0 :(得分:0)
您可以使用条件逻辑执行此操作。也许是这样的:
select iif(DateDiff('d', StartDate, EndDate) > 30,
DateDiff('d',StartDate,EndDate) & " days",
"2 months"
)
你的逻辑表明任何超过30天的事情都是“2个月”似乎很奇怪。通常,我认为逻辑看起来像这样:
select iif(DateDiff('d', StartDate, EndDate) > 30,
DateDiff('d', StartDate, EndDate) & " days",
DateDiff('m', StartDate, EndDate) & " months"
)
答案 1 :(得分:0)
似乎正日数的最小月数是1,因此:
MonthCount = Sgn(DateDiff("d",StartDate,EndDate)) + DateDiff("m",StartDate,EndDate)
修改强>
对于产生示例输出的30天剪切,请在查询中使用此简单公式:
MonthCount: (DateDiff("d",[StartDate],[EndDate])-1)\30+1
答案 2 :(得分:0)
这个逻辑能够修改你的SQL函数吗?
FN_GET_MONTH(DateDiff("d", StartDate, EndDate))
你可以使用这个公共函数并在你的SQL代码中使用它,比如
<![CDATA[...]]>
答案 3 :(得分:0)
此查询似乎给出了您寻求的结果:
SELECT
StartDate,
EndDate
numDays,
((numDays - 1) \ 30) + 1 AS numMonths
FROM
(
SELECT
StartDate,
EndDate,
DateDiff("d", StartDate, EndDate) AS numDays
FROM YourTable
)
它给了我
numDays numMonths
------- ---------
...
29 1
30 1
31 2
32 2
...
59 2
60 2
61 3
62 3
...