从oracle数据库查询出的数据,按其中一个字段时间排序。查询语句该如何写?

select * from T_SCHOOL_RECORDCOMMENT where RECORDID = :p_cid order by to_date('COMMENTTIME','yyyy-mm-dd hh24:mi:ss') desc
这是查询语句

这是查询结果,但是时间排序是乱的,比如说我想刚发表的显示在第一行,然后依次排下去。该如何写这个查询语句呢?

select * from (select 除了时间所有字段写出来,to_date('COMMENTTIME','yyyy-mm-dd hh24:mi:ss') time from T_SCHOOL_RECORDCOMMENT where RECORDID = :p_cid) order by time desc;
这样试试,但是你的时间字段用该保存为date类型,这样好像很麻烦。。追问

"select*from('COMPANYID','ROCORDID','COMMENTBY','TITLE','CONTENT',to_date('COMMENTTIME','yyyy-mm-dd hh24:mi:ss') time from T_SCHOOL_RECORDCOMMENT where RECORDID = :p_cid) order by time desc"这样写报列名无效,

追答

把你的表结构给我看一下吧

追问

追答

COMMENTTIME字段已经是date类型了,不需要做处理,直接
select * from T_SCHOOL_RECORDCOMMENT where RECORDID = :p_cid order by COMMENTTIME desc;

如果你是想改变时间格式,用
alter session set nls_date_format='yy-mm-dd hh24:mi:ss';

追问

谢谢哈,按你这么说的成功了。还有一个问题,就是一张表中是装的录音信息嘛,其中表有 一个PRAISECOUNT字段,意思是该条录音的推荐次数,还有一个字段是ISTOP,有两个值,0表示不置顶,1表示置顶。现在我前台页面aspx有一个repeater控件,目前是按推荐次数从高到低排序的,但是我想实现,前面先把置顶的行显示出来,再显示推荐次数从高到底的。这个怎么实现?

追答

不客气 - -
在排序的时候是可以写多个条件的,条件的优先级是按照书写顺序排列的
你刚刚说的这个问题select * from table_A order by istop desc,praisecount desc;

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-27
 select * from T_SCHOOL_RECORDCOMMENT  where RECORDID = :p_cid  order by (to_number(to_char(sysdate,'yyyymmddhh24miss'))-to_number(to_char(COMMENTTIME,'yyyymmddhh24miss')));
代码是oracle数据库在pl/sql环境下写的 。最后说明一点,这个地方该使用升序方式(离当前时间最小的记录,ok)

  

第2个回答  2019-02-18
select * from table order by 时间字段 desc