生日查询的问题,查了很多资料,还是有些疑问,请大家进来指教
我要查询某一段时间内要过生日的所有员工,怎么写这个查询语句
我用的是邹建那本sql server2000开发与管理应用实例上面介绍的语句:
select @dt1 datetime,@dt2 datetime
select @dt1= '2003-12-05 ',@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,@dt1),birthday)
between @dt1 and @dt2
2003-12-05到2006-02-28之间肯定是所有的人都会在这段时间内生日,但是用这种方法就不能查出出生日期为1984-10-13或者1984-5-4的记录,请问怎么改进这种方法以满足我的要求???
------解决方案--------------------declare @t table(birthday datetime)
insert into @t values( '1984-07-01 ')
declare @dt1 datetime,@dt2 datetime
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) --这里改成@dt2
between @dt1 and @dt2
------解决方案--------------------2003-12-05到2006-02-28之间肯定是所有的人都会在这段时间内生日,但是用这种方法就不能查出出生日期为1984-10-13或者1984-5-4的记录,请问怎么改进这种方法以满足我的要求???
----------
这两个出生日期的记录为什么能查出来?不在查询范围之内啊
------解决方案--------------------declare @t table(birthday datetime)
insert into @t values( '1984-07-01 ')
declare @dt1 datetime,@dt2 datetime
select @dt1= '2004-07-01 ',@dt2= '2004-07-07 '
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
7月1日生日,当然不在12-05跟02-28之间