我在旧代码中找到了一个位置,原始程序员试图计算一名员工是否已被聘用了一定年限。计算使用了雇用日期和今天之间的天数之差除以364.这对我来说没有意义所以我将其改为多年的差异。这也似乎给出了错误的答案。 DateDiff是否一直到最近的一年?在即时窗口中运行此公式得到15作为答案。我希望它能给出14。
?datediff("yyyy",#3/1/1999#,#2/19/2014#)
使用它会更好吗。
?datediff("m",#3/1/1999#,#2/19/2014#)/12
答案 0 :(得分:5)
DateDiff
多年来只考虑您提供的日期部分。并且它不会返回您可能想要的“多少年”......
例如,就DateDiff("yyyy"
而言,2013年的最后一天到2014年的第一天将是一年。
? DateDiff("yyyy", #2013-12-31#, #2014-1-1#)
1
答案 1 :(得分:1)
DateDiff
如果年份差异为x年和y个月,则四舍五入到下一年。
例如:
如果一个人的年龄为18岁零一个月,则datediff(yy,DDOB,GetDate())
的结果将为'19'。
如果您不想四舍五入,可以
INTEGER
使用FLOOR
忽略小数部分(不要舍入为小数点
下一个号码):
FLOOR((CAST (GetDate() AS INTEGER) - CASR(YourDate AS INTEGER)) / 356.25)
答案 2 :(得分:0)
您可以将IIf,DateDiff和DateAdd组合在一起,如下所示:
=IIf(DateDiff("m";DateAdd("yyyy";DateDiff("yyyy";[DDOB];Date());[DDOB]);Date())<0;
DateDiff("yyyy";[DDOB];Date())-1;
DateDiff("yyyy";[DDOB];Date()))
因此,首先您要计算DDOB加DateDiff
年和Date()
之间的月份,如果整数形式DateDiff
“ m”为负,则IIf将减少年份的值一个。