我有一张雇员表。
我需要让在公司工作5年的员工。不是6年,不是4。5年。
那些在那里工作10年和15年的人也一样。
我该怎么做?
这就是我现在所拥有的,但它运作不佳。我有一名员工,将在3天内完成5年,无论如何,查询都会选择他。
SELECT name, DATEDIFF(day, join_date, GETDATE())/365 as Years, join_date from employee
where
(
DATEDIFF(day, join_date, GETDATE()) > 365*5 and
DATEDIFF(day, join_date, GETDATE()) < 365*6
)
OR
(
DATEDIFF(day, join_date, GETDATE()) > 365*10 and
DATEDIFF(day, join_date, GETDATE()) < 365*11
)
OR
(
DATEDIFF(day, join_date, GETDATE()) > 365*15 and
DATEDIFF(day, join_date, GETDATE()) < 365*16
)
答案 0 :(得分:2)
我建议您为此目的使用dateadd()
而不是datediff()
:
where (join_date > dateadd(year, -6, getdate()) and join_date <= dateadd(year, -5, getdate())
) or
(join_date > dateadd(year, -11, getdate()) and join_date <= dateadd(year, -10, getdate())
) or
(join_date > dateadd(year, -15, getdate()) and join_date <= dateadd(year, -16, getdate())
)
我猜你的问题是,这些年没有365天。近似值接近365.25天。但是,增加几年的间隔可以解决猜测某一年中有多少天的问题。