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
這就是我想要的結果啦!