一个排序的问题,等于今天日期的排上面,大于今天的排中间,小于今天的排下面
表明:Table1
字段名:Ftime,FNAME
数据:
2013年6月18日 张三
2013年6月19日 丙六
2013年6月15日 赵四
2013年6月20日 王五
2013年6月18日 李四
假如今天是2013年6月18日,那么结果我要:
2013年6月18日 张三
2013年6月18日 李四
2013年6月19日 丙六
2013年6月20日 王五
2013年6月15日 赵四
------解决方案--------------------在0和1 后面少了个WHEN ,可以改成下面的。
select * from #tb
order by case when convert(varchar(10),convert(datetime ,substring(Ftime,1,4)+'-'+substring(Ftime,6,1)+'-'+substring(Ftime,8,2)),120)=convert(varchar(10),getdate(),120) then 0
WHEN convert(varchar(10),convert(datetime ,substring(Ftime,1,4)+'-'+substring(Ftime,6,1)+'-'+substring(Ftime,8,2)),120)>convert(varchar(10),getdate(),120) then 1
WHEN convert(varchar(10),convert(datetime ,substring(Ftime,1,4)+'-'+substring(Ftime,6,1)+'-'+substring(Ftime,8,2)),120)<convert(varchar(10),getdate(),120) then 2 else 3 end,Ftime
------解决方案--------------------select * from tb
order by case when convert(varchar(10),Ftime,120)=convert(varchar(10),getdate(),120) then 0
when convert(varchar(10),Ftime,120)>convert(varchar(10),getdate(),120) then 1
when convert(varchar(10),Ftime,120)<convert(varchar(10),getdate(),120) then 2
else 3 end,Ftime