none
請問如何算出員工到職 年月日合併 RRS feed

  • 問題

  • 各位大大好,小弟遇到一個問題百思不解請大大協助

    select e.Code,e.CnName
    ,  datediff(yy, e.JobDate, getdate()) - ceiling((datepart(dayofyear, e.JobDate) - datepart(dayofyear, getdate())) * 0.0001) AS 在職年分
    ,  datediff(mm, e.JobDate, getdate()) - ceiling((datepart(dayofyear, e.JobDate) - datepart(dayofyear, getdate())) * 0.0001) AS 在職月份
    ,  datediff(dd, e.JobDate, getdate()) - ceiling((datepart(dayofyear, e.JobDate) - datepart(dayofyear, getdate())) * 0.0001) AS 在職日

    ---------------------------------------

    上面只能算出 某員工 已經在職幾年,共幾個月,共幾天

    但我想要調整成 幾年幾月幾日

    如我在去年2012年03月01日到職的話

    應該顯是為已到職  2年1月17日

    -------

    依我上面打的程式碼,我用運算是計算,如日的部分 ((在職月份/12)-在職月年)*30 如下

    (((datediff(mm, e.JobDate, getdate())-ceiling((datepart(dayofyear, e.JobDate)-datepart(dayofyear, getdate()))*0.0001))/12)
      -(datediff(yy, e.JobDate, getdate())-ceiling((datepart(dayofyear, e.JobDate)-datepart(dayofyear, getdate()))*0.0001)))*30 AS 在職月份

    遇到幾個問題

    1.有小數點的問題,如 22.5天 要去除小數點如何去除? 

    2. 大月31天,小月30天,2月28天,依照我的CODE下去執行日期是不是會有誤差?

    3.如果有 是不是有更好的解決辦法?

    2015年4月17日 上午 07:41

解答

所有回覆