2012-03-18 123 views
0

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

我有两列,加入(日期),退职(日期,其中可能等于空,如果员工主动)

所以让我们只说,有人开始在1996年9月18日(年/月的工作/ DD)。

请帮忙,谢谢。

+0

您正在使用的数据库? – 2012-03-18 09:50:06

+0

欢迎来到S/O。总的来说,提供你已经尝试过的东西是一个不错的主意 - 如果你首先给它一个好的东西,你会学到更多东西':'' – halfer 2012-03-18 10:12:49

+1

(请用你的数据库类型重新提出你的问题)。 – halfer 2012-03-18 10:13:48

回答

1

(假设你正在使用MySQL - 从NOW()功能)

我认为你需要使用COALESCE()功能,所以无论是ResignedNOW()在计算中使用DATEDIFF()

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

所以,你可能有这样的东西:

​​

或:

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

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

1

年有2位小数(假设TSQL)

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