如果今天过生日,如何从表格中选择记录?

时间:2015-01-05 08:09:07

标签: sql sql-server dob

如果用户的生日是今天,我想从用户表中获取名称。

用户表

name  |   date of birth
------+-----------------
name1 |   20/05/1991
name2 |   05/01/1995
name3 |   05/01/1991

如果我提供:05/01/2015作为参数,则应显示name2name3

任何人都可以通过date参数告诉我过滤结果所需的SQL查询。

2 个答案:

答案 0 :(得分:7)

此查询应该适合您:

SELECT NAME, [DATE OF BIRTH]
FROM TABLE
WHERE DAY([DATE OF BIRTH]) = DAY(GETDATE())
    AND MONTH([DATE OF BIRTH]) = MONTH(GETDATE())

以下是基于您的示例数据的SQLFiddle查询。

我的初步回答是不正确的,因为它实际上是在查找GETDATE()DATE OF BIRTH之间的相同日期,如果您正在寻找今天有生日的人(因为生日不依赖于一年,但月和日)。

答案 1 :(得分:1)

SELECT [DATE OF BIRTH], Name
FROM [TABLE]
WHERE datepart(dd,[DATE OF BIRTH]) = datepart(dd,GETDATE()) 
AND datepart(mm,[DATE OF BIRTH]) = datepart(mm,GETDATE())

获取一系列日期的列表:

declare @StartDate DATE
declare @EndDate DATE

SELECT [DATE OF BIRTH], Name
FROM [TABLE]
WHERE 
datepart(dd,[DATE OF BIRTH]) between datepart(dd,@StartDate) 
AND datepart(dd,@EndDate)   

AND datepart(mm,[DATE OF BIRTH]) between datepart(mm,@StartDate) 
AND datepart(mm,@EndDate)