MySQL格式化時間戳 統計當日,第二天,第三天,3個工作日以后的數據


mysql 查詢出來的處理時間和開始時間都是13位的時間戳

SELECT `END_TIME`,`CREATE_TIME` FROM t_table

需求是統計當日,第二天,第三天,3個工作日以后的時間段的數據,真的是找了好多資料,真的是要記錄一下如何轉到天數去計算

首先

要把時間的戳給去掉(因為java的date默認精度是毫秒,也就是說生成的時間戳就是13位的),並四舍五入一下

SELECT ROUND(eor.`END_TIME` / 1000),  ROUND( eor.`CREATE_TIME`/ 1000)FROM t_table

 

但是還是沒有看到具體的時間,MySQL需要用FROM_UNIXTIME()函數格式化一下,具體用法百度很多 ,我也就不寫了

SELECT FROM_UNIXTIME(ROUND( eor.`END_TIME`/ 1000)), FROM_UNIXTIME(ROUND( eor.`CREATE_TIME`/ 1000)) FROM t_table

 

終於看到具體的時間啦,但是,怎么計算天數呢?翻了百度mysql中的to_days()函數,可以返回天數,真好

SELECT TO_DAYS(FROM_UNIXTIME(ROUND( eor.`END_TIME`/ 1000))), TO_DAYS(FROM_UNIXTIME(ROUND( eor.`CREATE_TIME`/ 1000))) FROM t_table

 

這樣 返回的是0到2019-06-05 之間的天數

最后

最后

SELECT
COUNT(TO_DAYS(FROM_UNIXTIME(ROUND(eor.`END_TIME` / 1000)))-TO_DAYS(FROM_UNIXTIME(ROUND( eor.`CREATE_TIME`/ 1000)))<1 OR NULL) AS today,//小於1就是當天的
COUNT(TO_DAYS(FROM_UNIXTIME(ROUND(eor.`END_TIME` / 1000)))-TO_DAYS(FROM_UNIXTIME(ROUND( eor.`CREATE_TIME`/ 1000)))=1 OR NULL) AS secondDay,//等於1就是第二個工作日COUNT(TO_DAYS(FROM_UNIXTIME(ROUND(eor.`END_TIME` / 1000)))-TO_DAYS(FROM_UNIXTIME(ROUND( eor.`CREATE_TIME`/ 1000)))=2 OR NULL) AS thirdDay,//等於2就是第三個工作日
COUNT(TO_DAYS(FROM_UNIXTIME(ROUND(eor.`END_TIME` / 1000)))-TO_DAYS(FROM_UNIXTIME(ROUND( eor.`CREATE_TIME`/ 1000)))>2 OR NULL) AS afterThreeDays//大於2  就是3個工作日以后的數據
FROM
t_table

 

 

這就是我想要的結果啦!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM