Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

关于计算日期差的一点思路!计算工龄精确到天的方法

时 间:2014-09-19 14:52:34
作 者:周伯通   ID:35938  城市:大冶
摘 要:一个查询计算的表达式,用来计算"工龄"(精确到天)或"离退休倒计时"
要求:  姓名      日期1        日期2        工龄1(效果) 
        路人甲    2007/4/2     2014/9/18     7年 5个月 16天 

正 文:

应  叶落潇潇  的要求,做一个查询计算的 表达式 用来计算 工龄(精确到天)或离退休倒计时

    要求:  姓名      日期1        日期2               工龄1(效果)
     
               路人甲    2007/4/2     2014/9/18     7年 5个月 16天 

              土匪乙    2007/4/22    2014/9/18     7年 4个月 27天  

              流氓丙    2007/9/20    2014/9/18     6年11个月 29天 

基本算法思路:设定为 X 年 Y 个月 Z 天
多种算法以 Z 的算法 因为每个月天数不一样,容易出现误差,

所以,此思路是取一个中间日期值,避免计算当月天数(30天 或31天)
           中间值     结论
路人甲    2014/9/2    Z = 2014/9/18 - 2014/9/2 = 16 天

土匪乙    2014/8/22   Z = 2014/9/18 - 2014/8/22 = 27 天(8月有31天)

流氓丙    2014/8/20   Z = 2014/9/19 - 2014/8/20 = 29 天


 此思路的Z 计算表达式 如下:

IIf(Day([日期2])-Day([日期1])<0,[日期2]-DateSerial(Year([日期2])
    ,Month([日期2])-1,Day([日期1])),Day([日期2])-Day([日期1]))


因为1年 12个月 是不变值,统计日期1 和日期2 的 月份总数差 结合上述日期的判定

               月份总差                          X              Y         
路人甲   2014*12+9-(2007*12+4)= 89       Int(89,12)=7    89 mod 12 =5
土匪乙   2014*12+9-(2007*12+4)-1 = 88    Int(88,12)=7    88 mod 12=4
流氓丙   2014*12+9-(2007*12+9)-1 = 83    Int(83,12)=6    83 mod 12=11

可见结论出来了,

表达式汇总如下:
IIf(Day([日期2])-Day([日期1])<0,Int((Year([日期2])*12 + Month([日期2])-(Year([日期1])*12 + Month([日期1]))-1)/12)
    & "年" & (Year([日期2])*12 + Month([日期2])-(Year([日期1])*12 + Month([日期1]))-1) mod 12 
    & "个月" & [日期2]-DateSerial(Year([日期2]),Month([日期2])-1,Day([日期1])) & "天",
    Int((Year([日期2])*12 + Month([日期2])-(Year([日期1])*12 + Month([日期1])))/12)
    & "年" & (Year([日期2])*12 + Month([日期2])-(Year([日期1])*12 + Month([日期1]))) mod 12 
    & "个月" & (Day([日期2])-Day([日期1])) & "天")


可将[日期2]或[日期1]换成Date() 即是今日;用来计算工龄或倒计时;

此为个人之见解,用以抛砖引玉!



Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助