Database 计算累计假期天数

Database 计算累计假期天数,database,ms-access,Database,Ms Access,我有一个使用的2007 MS Access数据库,我想添加一个子表单,其中显示基于员工的假期计算以及其他内容。我在网上找到了一个模块,它可以计算两个日期之间经过的时间,并给出一个结果,比如1年2个月3天或2年等。我需要有结果给我几周的假期,而不是几年、几个月和几天。在我的查询中,它将基于[DateOther]和Date() 1年服务=1周假期 2年服务=2周假期 8年服务=3周假期 15年服务=4周假期 25年服务=5周假期 - 你可以用datediff 根据持续时间边界选择一个案例,然后

我有一个使用的2007 MS Access数据库,我想添加一个子表单,其中显示基于员工的假期计算以及其他内容。我在网上找到了一个模块,它可以计算两个日期之间经过的时间,并给出一个结果,比如1年2个月3天或2年等。我需要有结果给我几周的假期,而不是几年、几个月和几天。在我的查询中,它将基于[DateOther]和Date()

  • 1年服务=1周假期
  • 2年服务=2周假期
  • 8年服务=3周假期
  • 15年服务=4周假期
  • 25年服务=5周假期
-


你可以用datediff

根据持续时间边界选择一个案例,然后返回一个整数,表示可用的一周假期

如果你加上这个,你应该得到年数

Dim yearsService As Integer
yearsService = DateDiff ("yyyy", varStartDate , varEndDate)

这将导致一个整数结果

TotalVacWeeks:IIf([YearsOfService]如果我现在输入一个查询AccumVacWeeks:fElapsedTimeYMD([EmpDateOfHire],Date())在我的查询中,它将根据员工在那里工作的年、月、日(如果有的话)来显示。很抱歉,我不知道我应该在哪里做一个选择案例?如果我在查询中做了一堆IIF,我会得到一个错误,因为函数会给我一个数字和文本的结果。例如,如果执行DateDiff(“yyyy”、“15/10/1998”、“22/11/2003”应该是返回一个5的整数,而不是字符串。我了解这一点,但我不明白你想做什么?函数给出的结果不是它在“1年5个月1天”中给出的日期格式。(cc:@SoggyCashew)请注意
DateDiff(“yyy”…)
不基于月和日计算整年,它本质上是
年(结束日期)-年(开始日期)
。例如,
DateDiff(“yyyy”,“1998-12-31”,“1999-01-01”)
返回1,即使两个日期之间的差值只有一天,而不是一整年。VacWeeksEarned2:IIf(DateDiff('yyyyy',[empdateofher],Date())非常适合我的查询,谢谢!
TotalVacWeeks: IIf([YearsOfService]<=0,0,IIf([YearsOfService]<=1,1,IIf([YearsOfService]<=7,2,IIf([YearsOfService]<=14,3,IIf([YearsOfService]<=24,4,IIf([YearsOfService]>=25,5))))))+IIf([BoughtVac]=True,1,0)
TotalVacWeeks: IIf([YearsOfService]<=0,0,IIf([YearsOfService]<=1,1,IIf([YearsOfService]<=7,2,IIf([YearsOfService]<=14,3,IIf([YearsOfService]<=24,4,IIf([YearsOfService]>=25,5))))))+IIf([BoughtVac]=True,1,0)