数据库里存的是会员的生日(包括年月日),我想查出今天到后天过生日的客户(只能根据月和日)。 我写出来后特别复杂,大家有什么简单点的方法吗?
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))
Where AddDate>='" + startDate + "' and AddDate<='" + stopDate + "'"
第一种: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可以添加。
你再存多一列为客户的生日(不包括年)不就行了吗?而且生日是不会更改的。用这么麻烦的方法,查询效率很低的。