如果用户的生日是今天,我想从用户表中获取名称。
用户表
name | date of birth
------+-----------------
name1 | 20/05/1991
name2 | 05/01/1995
name3 | 05/01/1991
如果我提供:05/01/2015
作为参数,则应显示name2
和name3
。
任何人都可以通过date参数告诉我过滤结果所需的SQL查询。
答案 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)