SQL Query检查今天是否是员工的生日

时间:2012-01-10 13:20:36

标签: sql datetime datediff

任何人都可以告诉我如何获得今天过生日的员工名单....

谢谢, 维沙尔

5 个答案:

答案 0 :(得分:16)

SELECT *
FROM Employees
WHERE DATEPART(d, DateOfBirth) = DATEPART(d, GETDATE())
    AND DATEPART(m, DateOfBirth) = DATEPART(m, GETDATE())

答案 1 :(得分:1)

理想情况下,有关数据源结构的更多信息会有所帮助,但提供员工记录的简单答案有D.O.B.字段是将此日期和月份与查询的where子句中的当前系统日期进行比较。

以下几行:

select * from wherever
where
....
(
  datepart(d, EmployeeDOB) = datepart(d, getdate()) and
  datepart(m, EmployeeDOB) = datepart(m, getdate())
)
.....

答案 2 :(得分:0)

WHERE今天员工生日的一个月和一天的月份和日期(显然)。更具体的说明需要更多的输入。

答案 3 :(得分:0)

您可以这样做:

select e.name from employeeTable e
where right(e.birthday) = right(convert(varchar(8), getdate(), 112), 4)

select e.name from employeeTable e
where datepart(d, e.birthday) = datepart(d, getdate())
    and datepart(m, e.birthday) = datepart(m, getdate())

答案 4 :(得分:0)

虽然这种情况要长得多,但它确实可以避免扫描整个表格以寻找匹配。

WITH
  a_century AS
(
  SELECT 1 AS year
  UNION ALL
  SELECT year * 2 + 0 AS year FROM a_century WHERE year < 64
  UNION ALL
  SELECT year * 2 + 1 AS year FROM a_century WHERE year < 64
)
SELECT
  *
FROM
  yourTable
INNER JOIN
  a_century
    ON yourTable.birthday = DATEADD(year, -a_century.year, DATEADD(day, DATEDIFF(day, 0, getDate()), 0))