【mysql】如何对 时分秒 不规则的数据排序 处理为正常的升序或者降序
這里寫目錄標(biāo)題
- 場景描述
- 一、使用sql函數(shù)
- 1、date_format()
- 2、date_format() +CONCAT()
- 3、注意
- 二、最終方案
- 1、time_to_sec() 時間轉(zhuǎn)為秒
場景描述
我們需要對下面這列 finish_time 進(jìn)行排序
字段類型是varchar,然后這個時間存入(爬取來的無法控制)沒有完全按照標(biāo)準(zhǔn)存儲
比如:9:03:52 標(biāo)準(zhǔn)的寫法應(yīng)該是:09:03:52
按照標(biāo)準(zhǔn)的寫法我們可以直接 根據(jù) finish_time asc 進(jìn)行一個升序的排列
一、使用sql函數(shù)
我選擇了2個函數(shù)
- 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
- 正常時間區(qū)間: 0:00:00 - 24:00:00
- 非正常區(qū)間:24:00:00以上
的時間字符串現(xiàn)在我想排序,用到了 date_format 但是只能處理大于0:00:00~24:00:00的區(qū)間排序,剩下的如果在分頁內(nèi) 就會亂序
1、time_to_sec() 時間轉(zhuǎn)為秒
這個函數(shù)正好應(yīng)對我這個場景
可以參考這個鏈接:Mysql 日期函數(shù)整理大全
很明顯這樣用轉(zhuǎn)化好的秒數(shù)對比,正好解決此問題
其他思路:
還有人推薦可以定一個日期,然后加上這個時間長度去比較,但是沒找到這個時間函數(shù),感覺相比于這個秒數(shù),效率會低一些。
總結(jié)
以上是生活随笔為你收集整理的【mysql】如何对 时分秒 不规则的数据排序 处理为正常的升序或者降序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速MATLAB学习,数学建模
- 下一篇: 使用 OpenCV 构建车辆计数器系统