首页 新闻 会员 周边

sql日期去除年 查出x月x日到x月x日之间

0
悬赏园豆:10 [已解决问题] 解决于 2010-04-19 13:37

数据库里存的是会员的生日(包括年月日),我想查出今天到后天过生日的客户(只能根据月和日)。 我写出来后特别复杂,大家有什么简单点的方法吗?

问题补充: convert(datetime,('2000-'+convert(varchar,month(customBrith))+'-'+ convert(varchar,day(customBrith)))) between convert(datetime,('2000-'+convert(varchar,month(getdate()))+'-'+ convert(varchar,day(getdate())))) and convert(datetime,('2000-'+convert(varchar,month(getdate()+" +2+ "))+'-'+ convert(varchar,day(getdate()+" +2+ ")))) 我是这样做的
风枫峰的主页 风枫峰 | 菜鸟二级 | 园豆:215
提问于:2010-04-17 15:15
< >
分享
最佳答案
0

sql server的话就下面了

select
* from testDate
where
substring(convert(varchar(100),birthdate,112),5,4)
between substring(convert(varchar(100),getDate(),112),5,4)  and
substring(convert(varchar(100), DATEADD(d,2,  getDate()),112),5,4)

要是想处理2月29日的人的话。就用in吧

select
* from testDate
where
substring(convert(varchar(100),birthdate,112),5,4)
in(substring(convert(varchar(100),getDate(),112),5,4),
substring(convert(varchar(100), DATEADD(d,1,  getDate()),112),5,4),
substring(convert(varchar(100), DATEADD(d,2,  getDate()),112),5,4))

收获园豆:10
快速开发平台 | 初学一级 |园豆:177 | 2010-04-17 20:05
其他回答(3)
0

Where AddDate>='" + startDate + "' and AddDate<='" + stopDate + "'"

Astar | 园豆:40805 (高人七级) | 2010-04-17 16:23
0

第一种:month(colname)=month(getdate()) and day(colname)-day(getdate()) between 0 and 2

第二种:datediff(day,convert(datetime,str(year(getdate()),4)+'-'+str(month(requireddate),2)+'-'+str(day(requireddate),2)),requireddate) between 0 and 2
暂时就想到这2种,还有的lx可以添加。

清海扬波 | 园豆:825 (小虾三级) | 2010-04-17 16:25
0

你再存多一列为客户的生日(不包括年)不就行了吗?而且生日是不会更改的。用这么麻烦的方法,查询效率很低的。

麦舒 | 园豆:452 (菜鸟二级) | 2010-04-17 23:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册