Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果生日是今天,如何从表中选择记录?_Sql_Sql Server_Dob - Fatal编程技术网

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

Sql 如果生日是今天,如何从表中选择记录?,sql,sql-server,dob,Sql,Sql Server,Dob,如果用户的生日是今天,我想从用户表中获取名称 用户表 name | date of birth ------+----------------- name1 | 20/05/1991 name2 | 05/01/1995 name3 | 05/01/1991 如果我提供:05/01/2015作为参数,它应该显示name2和name3 谁能告诉我按日期参数筛选结果所需的SQL查询。此查询适用于您: SELECT NAME, [DATE OF BIRTH] FROM TABLE

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

用户表

name  |   date of birth
------+-----------------
name1 |   20/05/1991
name2 |   05/01/1995
name3 |   05/01/1991
如果我提供:
05/01/2015
作为参数,它应该显示
name2
name3


谁能告诉我按日期参数筛选结果所需的SQL查询。

此查询适用于您:

SELECT NAME, [DATE OF BIRTH]
FROM TABLE
WHERE DAY([DATE OF BIRTH]) = DAY(GETDATE())
    AND MONTH([DATE OF BIRTH]) = MONTH(GETDATE())
下面是一个基于示例数据的查询示例

我最初的回答是不正确的,因为它实际上是在寻找
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)

“出生日期”列的数据类型是什么?@praveen prasannan-datetime您希望如何处理非闰年2月29日出生日期的用户?忽视他们?或者包括在2月28日或3月1日?还是别的什么?很好用。在给定范围内得到生日清单有什么想法吗?@Vino这是你应该问的另一个问题。如果此答案对您有效,请将其升级/标记为正确,并对StackOverflow上的其他答案(如果他们能够帮助您)执行相同操作。要获取日期范围,您应使用BETWEEN运算符。但正如拉杜所说,这是一个全新的问题。谢谢大家的评论,这对我也很有用!
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)