这些东西还是放在前台程序里完成吧.
非要交给SQL的话,
假设
tUser
uId uName uMail uRegTime
1 aa [email protected] 2005-6-1
2 bb [email protected] 2006-1-1
3 cc [email protected] 2006-5-3当输入starttime='2006-3-1',endtime='2006-5-1'时
此时
SELECT uid,uname,umail,RTRIM(uregtime) FROM tUser WHERE DATEDIFF(dd,@starttime,uRegTime)>=0 AND DATEDIFF(dd,uRegTime,@endtime)>=0
UNION ALL
SELECT uid,uname,'','' FROM tUser WHERE DATEDIFF(dd,@starttime,uRegTime)<0 OR
DATEDIFF(dd,uRegTime,@endtime)<0 当然,也可以用CASE WHEN,不过字段过多的话,语句太长.我就不写了.
也可以用 CASE WHEN 得到一个新列,为1,或0,为1的表示在时间段内,为0的表示不在时间段内,然后套个子查询,再写出来. 这种方法仅是为了减少代码输写量,跟直接用CASE WHEN没什么两样.不知道我是否理解对了楼主的意思.
非要交给SQL的话,
假设
tUser
uId uName uMail uRegTime
1 aa [email protected] 2005-6-1
2 bb [email protected] 2006-1-1
3 cc [email protected] 2006-5-3当输入starttime='2006-3-1',endtime='2006-5-1'时
此时
SELECT uid,uname,umail,RTRIM(uregtime) FROM tUser WHERE DATEDIFF(dd,@starttime,uRegTime)>=0 AND DATEDIFF(dd,uRegTime,@endtime)>=0
UNION ALL
SELECT uid,uname,'','' FROM tUser WHERE DATEDIFF(dd,@starttime,uRegTime)<0 OR
DATEDIFF(dd,uRegTime,@endtime)<0 当然,也可以用CASE WHEN,不过字段过多的话,语句太长.我就不写了.
也可以用 CASE WHEN 得到一个新列,为1,或0,为1的表示在时间段内,为0的表示不在时间段内,然后套个子查询,再写出来. 这种方法仅是为了减少代码输写量,跟直接用CASE WHEN没什么两样.不知道我是否理解对了楼主的意思.
是这样吗?select 用户,注册时间,结束时间,
case when ( 注册时间 is not null and 结束时间 is not null) then 详细信息 else '' end
from 用户表