【mysql】如何对 时分秒 不规则的数据排序 处理为正常的升序或者降序
生活随笔
收集整理的這篇文章主要介紹了
【mysql】如何对 时分秒 不规则的数据排序 处理为正常的升序或者降序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里寫目錄標題
- 場景描述
- 一、使用sql函數
- 1、date_format()
- 2、date_format() +CONCAT()
- 3、注意
- 二、最終方案
- 1、time_to_sec() 時間轉為秒
場景描述
我們需要對下面這列 finish_time 進行排序
字段類型是varchar,然后這個時間存入(爬取來的無法控制)沒有完全按照標準存儲
比如:9:03:52 標準的寫法應該是:09:03:52
按照標準的寫法我們可以直接 根據 finish_time asc 進行一個升序的排列
一、使用sql函數
我選擇了2個函數
- CONCAT(string,string)
- date_format()
1、date_format()
這里單純使用 date_format(‘3:59:07’,‘%H:%i:%s’)無法把時間正常的格式化
# 這個date_format單純的直接 select date_format('3:59:07','%H:%i:%s')2、date_format() +CONCAT()
于是便想到了,幫這個字符串拼接完整如下:
date_format(CONCAT(‘2000-05-07 ‘,a.finish_time),’%H:%i:%s’)
3、注意
如果這里 時間超過了24:00:00 則返回為空,則排序失效
二、最終方案
- 未完賽: 0:00:00
- 正常時間區間: 0:00:00 - 24:00:00
- 非正常區間:24:00:00以上
的時間字符串現在我想排序,用到了 date_format 但是只能處理大于0:00:00~24:00:00的區間排序,剩下的如果在分頁內 就會亂序
1、time_to_sec() 時間轉為秒
這個函數正好應對我這個場景
可以參考這個鏈接:Mysql 日期函數整理大全
很明顯這樣用轉化好的秒數對比,正好解決此問題
其他思路:
還有人推薦可以定一個日期,然后加上這個時間長度去比較,但是沒找到這個時間函數,感覺相比于這個秒數,效率會低一些。
總結
以上是生活随笔為你收集整理的【mysql】如何对 时分秒 不规则的数据排序 处理为正常的升序或者降序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速MATLAB学习,数学建模
- 下一篇: h2数据库增删改查基本操作