开始日期和系统时间之间的年份差异

时间:2012-03-18 09:46:07

标签: sql database

我有员工开始在动物园工作的日期,但我需要弄清楚他们在那里工作了多长时间。我已经完成了我的研究并知道我需要做什么,但我似乎无法弄清楚在DATEDIFF函数中合并NOW()函数的语法。我必须显示所有活跃的员工以及他们一直工作的年数(小数点后两位)。

我有两列,Joined(Date)和Resigned(日期,如果员工有效,则可能等于null)

所以,我们只想说有人在1996-09-18开始工作(yyyy / mm / dd)。

请帮忙,谢谢你。

2 个答案:

答案 0 :(得分:1)

(假设您使用的是MySQL - 来自NOW()函数)

我认为您需要使用COALESCE()功能,因此在Resigned的计算中使用了NOW()DATEDIFF()

DATEDIFF(COALESCE(Resigned, CURDATE()), Joined)  AS days

所以,你可以这样:

(DATEDIFF(COALESCE(Resigned, CURDATE()), Joined)) / 365   AS years

或:

(DATEDIFF(COALESCE(Resigned, CURDATE()), Joined)) / 365.25   AS years

如果您想对极端情况和闰年非常准确,则需要进行更复杂的计算。

答案 1 :(得分:1)

年份有2位小数(假设是TSQL)

SELECT ROUND( 
         CONVERT(FLOAT,
            DATEDIFF(day,joined,ISNULL(resigned,GETDATE()) ))/365,2)