sql 排序,order by 按时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 排序,order by 按时间相关的知识,希望对你有一定的参考价值。
问题: 我的时间是8:30 和10:30这种类型的
按orderby 升序排序的结果是 是10:30 11:30 12:30 8:30 9:30...这样排序的
但是我想是按8:30 9:30 10:30 11:30 ...这样排列 这个问题是为啥啊
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
比如要排序:
select date from tablename order by date desc
按date降序排列。 参考技术A 你这个是字符吧?字符当然10<11<8<9了
1. 把时间类型改成date类型之类的
2. 进行用字符存储,把8:30改成08:30,9:30改成09:30存储追问
数据库里已经有数据了 另外不想改成08:30 有别的招数吗
追答有,不过更麻烦:
比如 你把 冒号前后的内容拆分出来转换成数字
冒号前的 * 24 + 冒号后的
别忘了评为最佳,谢谢本回答被提问者采纳
SQL(ORACLE):ORDER BY 和 LIMIT [重复]
【中文标题】SQL(ORACLE):ORDER BY 和 LIMIT [重复]【英文标题】:SQL (ORACLE): ORDER BY and LIMIT [duplicate] 【发布时间】:2011-11-20 18:27:27 【问题描述】:我想按属性对我的数据库中的所有数据进行排序,并且仅在使用 LIMIT 和 OFFSET 之后。
这样查询:
SELECT select_list
FROM table_expression
[ ORDER BY ... ]
[ LIMIT number | ALL ] [ OFFSET number ]
我知道排序一旦找到排序结果的前 row_count 行就结束了。我可以在调用 LIMIT 和 OFFSET 之前对所有数据进行排序吗?
【问题讨论】:
相关:***.com/q/470542/1461424 【参考方案1】:在 12.1 之前,Oracle 不支持 LIMIT
或 OFFSET
关键字。如果要检索结果集的 N 到 M 行,则需要类似:
SELECT a.*
FROM (SELECT b.*,
rownum b_rownum
FROM (SELECT c.*
FROM some_table c
ORDER BY some_column) b
WHERE rownum <= <<upper limit>>) a
WHERE b_rownum >= <<lower limit>>
或使用解析函数:
SELECT a.*
FROM (SELECT b.*,
rank() over (order by some_column) rnk
FROM some_table)
WHERE rnk BETWEEN <<lower limit>> AND <<upper limit>>
ORDER BY some_column
这两种方法中的任何一种都会为您提供排序结果的 N 到 M 行。
在 12.1 及更高版本中,您可以使用 OFFSET
和/或 FETCH [FIRST | NEXT]
运算符:
SELECT *
FROM some_table
ORDER BY some_column
OFFSET <<lower limit>> ROWS
FETCH NEXT <<page size>> ROWS ONLY
【讨论】:
也许不像人们问的那么容易回答:对于非常大的表(1-1000 万行),这些方法中的哪一种可能更好?也许是关于 3-deep 选择 vs 2-deep with rank()?实际上,我想我会尝试两者看看。 对于任何想知道的人,我发现第一种方法对我来说在几毫秒内更快,而第二种方法在几秒钟内。我不确定是函数本身增加了时间,还是它阻止了任何查询优化。感谢您展示多种方法!以上是关于sql 排序,order by 按时间的主要内容,如果未能解决你的问题,请参考以下文章