Office中国论坛/Access中国论坛

标题: [求助]不用自定义函数,如何计算员工每月的请假天数(已解决) [打印本页]

作者: 默然    时间: 2003-2-25 21:12
有些感动,有些疑惑和不解,但不想弄明白。
作者: Roadbeg    时间: 2003-2-26 19:01
犹太人的确是一个很奇怪的民族,一个比大和民族更可怕的民族.
作者: zyp    时间: 2005-10-31 22:24
标题: [求助]不用自定义函数,如何计算员工每月的请假天数(已解决)
在ADP中,有如下的资料表(员工请假记录):  

















Id



员工



起始日期



结束日期





1



张三



2005/10/1



2005/10/3





2



张三



2005/10/12



2005/10/12





3



张三



2005/10/24



2005/10/28





4



李四



2005/9/21



2005/10/15





5



李四



2005/10/25



2005/10/26





6



李四



2005/10/30



2005/11/15





7



王二



2005/9/15



2005/11/14

现在需计算员工在10月份的请假记录,应该为如下结果:<FONT face="Times New Roman">









<TABLE cellSpacing=0 cellPadding=0 border=1>







员工



请假天数





张三



10

<TR>



李四

<TD vAlign=top width=96>

<FONT color=#
作者: 徐阿鹏    时间: 2005-11-3 19:57
直接计算两个日期间的间隔日期不就可以了吗?
作者: 徐阿鹏    时间: 2005-11-3 19:58
datediff()
作者: 徐阿鹏    时间: 2005-11-3 20:10
在表中直接加个计算列,天数,在公式中写:(datediff(day,[开始日期],[截止日期]) + 1)就可以了
作者: zyp    时间: 2005-11-4 00:51
以下是引用徐阿鹏在2005-11-3 12:10:00的发言:



在表中直接加个计算列,天数,在公式中写:(datediff(day,[开始日期],[截止日期]) + 1)

就可以了



谢谢阿鹏

问题可能比你想像的要复杂一点:

我要得到的结果是在本月内的请假天数,而不是请假的天数

也就说,请假日期不是本月的不予以计算,比如:10/25/2005-11/5/2005,在计10月份请假天数时,只能计7天(10/25/2005-10/31/2005),计11月请假天数时,只能计5天(11/1/2005-11/5/2005),不能直接用终止日期-起始日期的方法来获取结果的
作者: zyp    时间: 2005-11-6 00:55
问题已解决,用存储过程,代码如下:

Alter Procedure "JiaTsM"

(@FirstDay datetime,@LastDay DateTime)



As



     declare @Y int,@M int

     set @Y=year(@FirstDay)

     set @M=month(@FirstDay)



      SELECT 员工,

                 Convert(int,Case When 终止日期>@LastDay Then @LastDay Else 终止日期

                 End-Case When 起始日期<@FirstDay Then @FirstDay Else 起始日期 End)

                As 天数
  

      From 请假表

      WHERE

               ((year(起始日期)=@Y and month(起始日期)=@M) or

               (year(终止日期)=@Y and month(终止日期)=@M) or

                (起始日期<@FirstDay and 终止日期>@LastDay))

return

[此贴子已经被作者于2005-11-5 17:19:23编辑过]






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3