获取所有具有1年或以上工作经验的员工

pepwfjgg  于 2021-08-09  发布在  Java
关注(0)|答案(4)|浏览(297)

我一直在尝试显示所有有一年或一年以上工作经验的员工,但它一直显示所有员工,我正在使用 DATEDIFF(YEAR,Hired_Date,GETDATE()) >= 1 在where子句中,即使只有不到一年的经验,它也会继续显示出来。
员工\u tb

ID   Hired_Date
001  2018-05-01
002  2018-03-01
003  2020-05-01
004  2019-12-05
005  2017-03-01
pcrecxhr

pcrecxhr1#

SELECT *
FROM Employee_Tb
WHERE Hired_Date < CONVERT(DATE,DATEADD(year, -1, GETDATE()))
wh6knrhe

wh6knrhe2#

在您的查询中使用 EmpStartDate 而不是 Hired_Date .

select *
from @T
where DATEDIFF(YEAR, Hired_Date, GETDATE()) >= 1
n9vozmp4

n9vozmp43#

DATEDIFF(YEAR, EmpStartDate, GETDATE()) >= 1

显示日历年的差异。因此2019-12-31和2020-01-01相隔一个日历年。
根据你需要的精确程度,你应该使用 month 而不是 year .

3pvhb19x

3pvhb19x4#

请使用以下sql server查询:

SELECT ID, Hired_Date
FROM Employee_Tb
WHERE (DATEDIFF(YEAR, Hired_Date, GETDATE())) >= 1;

如果你想在mysql中使用 TIMESTAMPDIFF 具体如下:

SELECT * FROM Employee_Tb WHERE TIMESTAMPDIFF(YEAR, Hired_Date, CURDATE()) >= 1;
``` `TIMESTAMPDIFF` 如果你想要月差,你可以根据需要把年改成月或日。

相关问题