请教你一个SQL问题,
SELECT EmployeeCode, ChineseName, DATEDIFF(mm, OnDutyTime, GETDATE()) AS c,OnDutyTime
FROM EmployeeMsg 
显示如下:
EmployeeCode  ChineseName  C       OnDutyTime   
001           A            12      2005-03-15
002           C            12      2005-03-22

 GETDATE()为今天:2006-03-08
很明显C列显示的为错误的。后来发现只要一个规律:只要OnDutyTime  在2005-03-XX 都显示为C为12
当把:DATEDIFF(year, OnDutyTime, GETDATE()) AS cc 时显示的也不正确的。
不知为什么会是这样的?

解决方案 »

  1.   

    datediff() 函数有它自定义算法的!
      

  2.   

    不是吧,今天的时间为‘2006-03-08’呀,应该到
    如记录A,若今天的时间应到2005-03-15时C列才显示12才是正确的。
    或:DATEDIFF(year, OnDutyTime, GETDATE()) AS cc  CC为1 才为正确的。
      

  3.   

    select datediff(year,'2005-03-15',getdate())  是为1 啊!?select datediff(mm,'2005-03-15',getdate())
      

  4.   

    这样是不对的。
    我如果要求查询每个人的进厂年龄,
    select datediff(year,OnDutyTime,,getdate()) 
    这样的查询很明显是不准确的。
    不知有什么好的方法没有?