日期:2014-05-19  浏览次数:20374 次

按时间降序排列的问题?
我在数据库(SQL2000)里面定义的时间是VarChar(30)存储的是   如:2007-0-10等等日期

请问我使用这条语句:
select   top   8   *   from   zy_Newsdetails   where   newsType_id=@TypeDetailsID   order   by   newsdetails_time   desc

可以实现按照时间降序排序吗?   是不是一定要在数据库里面把时间定义为DATE才能排序吗??

为什么我的排序不是降序的   我排序newsType_id的时间就可以升序   降序都可以的啊?

------解决方案--------------------
如果你的字段是 "yyyy-MM-dd "格式的,可以排序;
如果是 "yyyy-M-d "格式,就没办法了

另外字符串排序非常耗资源,效率很低
------解决方案--------------------
vachar是用的字符顺序排序
转换为你的datatime吧
------解决方案--------------------
cast(xx,datatime)
然后排序
------解决方案--------------------
select top 8 * from zy_Newsdetails where newsType_id=@TypeDetailsID order by cast(newsdetails_time as datetime) desc
------解决方案--------------------
select cast( '2007-4-5 ' as datetime)
------解决方案--------------------
比楼上的晚了一步
------解决方案--------------------
select date2=cast( '2007-4-5 ' as date1) from table1 order by date2 desc
不过建议修改列,这样效率不高
------解决方案--------------------
declare @t table(d VarChar(30))
insert into @t select '2007-4-5 '
union select '2007-3-4 '
union select '2007-7-8 '
select s=cast(d as datetime) from @t order by s desc
------解决方案--------------------
<%# DataBinder.Eval(Container.DataItem, "AddTime ", "{0:D} ") %>