查询指定日期段内过生日的人员的sql代码

发布时间:2020-08-09编辑:脚本学堂
查询指定日期段内过生日的人员的sql代码,感兴趣的朋友可以参考下。
--测试数据
DECLARE @t TABLE(ID int,Name varchar(10),Birthday datetime)
INS

查询指定日期段内过生日的人员的sql代码,感兴趣的朋友可以参考下。
 

复制代码 代码如下:
--测试数据
DECLARE @t TABLE(ID int,Name varchar(10),Birthday datetime)
INSERT @t SELECT 1,'aa','1999-01-01'
UNION ALL SELECT 2,'bb','1996-02-29'
UNION ALL SELECT 3,'bb','1934-03-01'
UNION ALL SELECT 4,'bb','1966-04-01'
UNION ALL SELECT 5,'bb','1997-05-01'
UNION ALL SELECT 6,'bb','1922-11-21'
UNION ALL SELECT 7,'bb','1989-12-11'
  
DECLARE @dt1 datetime,@dt2 datetime
  
--查询 2003-12-05 至 2004-02-28 生日的记录
SELECT @dt1='2003-12-05',@dt2='2004-02-28'
SELECT * FROM @t
WHERE dateadd(Year,datediff(Year,Birthday,@dt1),Birthday)
    BETWEEN @dt1 AND @dt2
  OR DATEADD(Year,DATEDIFF(Year,Birthday,@dt2),Birthday)
    BETWEEN @dt1 AND @dt2
/**//*--结果
ID     Name    Birthday
---------------- ---------------- --------------------------
1      aa     1999-01-01 00:00:00.000
7      bb     1989-12-11 00:00:00.000
--*/
  
--查询 2003-12-05 至 2006-02-28 生日的记录
SET @dt2='2006-02-28'
SELECT * FROM @t
WHERE DATEADD(Year,DATEDIFF(Year,Birthday,@dt1),Birthday)
    BETWEEN @dt1 AND @dt2
  OR DATEADD(Year,DATEDIFF(Year,Birthday,@dt2),Birthday)
    BETWEEN @dt1 AND @dt2
/**//*--查询结果
ID     Name    Birthday
---------------- ----------------- --------------------------
1      aa     1999-01-01 00:00:00.000
2      bb     1996-02-29 00:00:00.000
7      bb     1989-12-11 00:00:00.000
--*/