获取具有特定年份的记录

时间:2015-12-06 17:36:53

标签: sql sql-server

我有一张雇员表。

我需要让在公司工作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
)

1 个答案:

答案 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天。但是,增加几年的间隔可以解决猜测某一年中有多少天的问题。