我有员工开始在动物园工作的日期,但是我需要弄清楚他们在那里工作了多久。我已经完成了我的研究并知道我需要做什么,但是我似乎无法弄清楚将NOW()函数合并到DATEDIFF函数中的语法。我必须显示所有在职员工以及他们一直在工作的年数(小数点后两位)。开始日期和系统时间之间的差异
我有两列,加入(日期),退职(日期,其中可能等于空,如果员工主动)
所以让我们只说,有人开始在1996年9月18日(年/月的工作/ DD)。
请帮忙,谢谢。
我有员工开始在动物园工作的日期,但是我需要弄清楚他们在那里工作了多久。我已经完成了我的研究并知道我需要做什么,但是我似乎无法弄清楚将NOW()函数合并到DATEDIFF函数中的语法。我必须显示所有在职员工以及他们一直在工作的年数(小数点后两位)。开始日期和系统时间之间的差异
我有两列,加入(日期),退职(日期,其中可能等于空,如果员工主动)
所以让我们只说,有人开始在1996年9月18日(年/月的工作/ DD)。
请帮忙,谢谢。
(假设你正在使用MySQL - 从NOW()
功能)
我认为你需要使用COALESCE()
功能,所以无论是Resigned
或NOW()
在计算中使用DATEDIFF()
:
DATEDIFF(COALESCE(Resigned, CURDATE()), Joined) AS days
所以,你可能有这样的东西:
或:
(DATEDIFF(COALESCE(Resigned, CURDATE()), Joined))/365.25 AS years
如果您想对极端情况和闰年非常准确,则需要更复杂的计算。
年有2位小数(假设TSQL)
SELECT ROUND(
CONVERT(FLOAT,
DATEDIFF(day,joined,ISNULL(resigned,GETDATE())))/365,2)
您正在使用的数据库? – 2012-03-18 09:50:06
欢迎来到S/O。总的来说,提供你已经尝试过的东西是一个不错的主意 - 如果你首先给它一个好的东西,你会学到更多东西':'' – halfer 2012-03-18 10:12:49
(请用你的数据库类型重新提出你的问题)。 – halfer 2012-03-18 10:13:48