select * from employee where month(BirthDay)=month(dateadd(dd,5,getdate())) and day(BirthDay)=day(dateadd(dd,5,getdate()))
---如果是未来5天内过生日的:
select * from employee where ( datediff(dd,getdate(), dateadd(year,datediff(year,BirthDay,getdate()),BirthDay)) between 0 and 5 )
or (datediff(dd,getdate(), dateadd(year,datediff(year,BirthDay,getdate())+1,BirthDay)) between 0 and 5)
写个存储过程,根据系统日期计算出要过生日的;存入目标表中定义个job,每天自动执行这个过程
但是你必须得到目标表中去读,还要确保数据库在执行job的时间是启动的
机器或程序不可能完成所有的工作;这也是人类存在的意义
select 会员资料.会员卡号,会员资料.姓名,会员资料.身份z号,出生日期 from 会员资料where datediff (day,getdate(),会员生日到期)<=3 and datediff (day,datetime(),会员生日到期)>0
==================
如果“会员生日到期”是2008年1月1日这个日期,那么你的语句逻辑是对的,只是DATE()改为GETDATE
'D'改为DAY即可。
如果您没有求出“会员生日到期”,那么可以先求出来,再执行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)