求一个关于时间的SQL语句

shoth 2011-07-19 11:31:15
id name time
1 a 21:00
2 a 05:00
3 b 03:00
4 a 19:00
5 b 18:00

order by name,time
但是time需要做个处理,就是00点以后的时候大于00前的

查询结果是
4 a 19:00
1 a 21:00
2 a 05:00
5 b 18:00
3 b 03:00

有没有人帮忙给个
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
凌梦轩 2011-07-27
  • 打赏
  • 举报
回复
学习额。
学学你们 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 luoyoumou 的回复:]
-- 是中午12:00以后的大于中午12:00 以前的吧?不是 00点以后的时候大于00前的 吧?
-- 楼主这样说:会让人产生误解!
[/Quote]
++ 开始俺也没明白LZ神马意思
luoyoumou 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 shoth 的回复:]
id name time
1 a 21:00
2 a 05:00
3 b 03:00
4 a 19:00
5 b 18:00

order by name,time
但是time需要做个处理,就是00点以后的时候大于00前的

查询结果是
4 a 19:00
1 a 21:00
2 a 05:00
5 b 18:00……
[/Quote]

-- 是中午12:00以后的大于中午12:00 以前的吧?不是 00点以后的时候大于00前的 吧?
-- 楼主这样说:会让人产生误解!
luoyoumou 2011-07-27
  • 打赏
  • 举报
回复
SQL> create table tb(id number(18,0), name varchar2(20), time varchar2(20));

表已创建。

SQL> insert into tb(id,name,time) values(1, 'a', '21:00');

已创建 1 行。

SQL> insert into tb(id,name,time) values(2, 'a', '05:00');

已创建 1 行。

SQL> insert into tb(id,name,time) values(3, 'b', '03:00');

已创建 1 行。

SQL> insert into tb(id,name,time) values(4, 'a', '19:00');

已创建 1 行。

SQL> insert into tb(id,name,time) values(5, 'b', '18:00');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from tb
2 order by name asc, time desc;

ID NAME TIME
---------- ---------------------------------------- ----------------------------------------
1 a 21:00
4 a 19:00
2 a 05:00
5 b 18:00
3 b 03:00
luoyoumou 2011-07-27
  • 打赏
  • 举报
回复
order by name asc, time desc;
duomo6161 2011-07-27
  • 打赏
  • 举报
回复

WITH t AS(
SELECT 1 AS ID ,'a' AS NAME,'21:00' AS TIME FROM dual UNION ALL
SELECT 2 AS ID ,'a' AS NAME,'05:00' AS TIME FROM dual UNION ALL
SELECT 3 AS ID ,'b' AS NAME,'03:00' AS TIME FROM dual UNION ALL
SELECT 4 AS ID ,'a' AS NAME,'19:00' AS TIME FROM dual UNION ALL
SELECT 5 AS ID ,'b' AS NAME,'18:00' AS TIME FROM dual
)
SELECT t.* ,CASE WHEN substr(TIME,1,2) < 10 THEN 1 ELSE 2 END AS flag FROM t t ORDER BY NAME,flag DESC,TIME;
easthome001 2011-07-27
  • 打赏
  • 举报
回复
飘过,学习一下下
YeHuai1991 2011-07-26
  • 打赏
  • 举报
回复
select sst.*,rownum num from (select name,time from '表名' order by time,name) sst order by num asc
flalscjf 2011-07-26
  • 打赏
  • 举报
回复
这么写应该可以吧
order by name, decode(sign(12 - time), -1, time, time + 24)
shoth 2011-07-20
  • 打赏
  • 举报
回复
LS没明白我的逻辑,

这样出来变成21,19,03
我需要的是19,21,03
livesguan 2011-07-20
  • 打赏
  • 举报
回复
order by name,time,变成 order by time desc;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧