我的訂單表使用的create_time時間戳記來表示下單時間的,如果取當日訂單好計算,但是如果取七天內的訂單呢?
如果我想要得到七天內的每一天的訂單數量又該怎麼計算呢?真是鬱悶,希望大神解答下哈,謝謝了。
回複內容:
我的訂單表使用的create_time時間戳記來表示下單時間的,如果取當日訂單好計算,但是如果取七天內的訂單呢?
如果我想要得到七天內的每一天的訂單數量又該怎麼計算呢?真是鬱悶,希望大神解答下哈,謝謝了。
七天內的訂單:
SELECT * FROM t_order WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(create_time);
七天內每天的訂單數量,先用where條件查出七天內的訂單,再用group by 對每天進行分組就行了:
SELECT DATE(create_time) createtime,COUNT(*) FROM t_order WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(create_time) GROUP BY createtime;
迴圈取肯定不好,最起碼不是最好的。
稍微進步點的:一下子取7天的,然後在代碼中分割,代碼中分割數組還是很快的。
如果資料量很大跑數組不現實,那就sql語句吧,一次性取出來也是可以的。
等高手展示sql。
你也可以將條件設定DATEDIFF(CURDATE(), create_time)<=7
你要是讓別人寫,起碼得告訴別人日期欄位,銷量欄位等等是什麼是吧
你要是問的話,那就只能用條件where了..
你可以在程式中先計算出一個日期,如果 strtotime(date('Y-m-d 00:00:00', strtotime('-7 days')) 得到7天前那天0點的時間戳記,然後去where不就行了嗎。
不建議用 MySQL 做統計,可以在每次產生一個訂單時,把訂單放到 redis 中
方案可以是每天一個集合.把每天的訂單號都放到這個集合裡
別管怎麼統計,都很方便,比如統計某一天的訂單,直接擷取那天集合中的訂單資料,不用走 MySQL