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 ...这样排列 这个问题是为啥啊

sql排序是指定时间字段才能按照时间排序,asc默认升序,desc默认降序。

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 + 冒号后的

参考技术B order by (CAST(LEFT(字段名,CHARINDEX(':',字段名)-1) AS INT))

别忘了评为最佳,谢谢本回答被提问者采纳

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 不支持 LIMITOFFSET 关键字。如果要检索结果集的 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 按时间的主要内容,如果未能解决你的问题,请参考以下文章

SQL中,group by 跟order by有什么区别?

若sql语句中order by指定了多个字段,则怎么排序?

GridView 中 order by desc 排序失效??

如何在 SQL 中不使用“ORDER BY”进行升序排序

mysql order by怎样多个时间字段排序

Mysql之 order by 排序