寫這篇博客主要是記錄自己在對訂單進行按日期查詢時使用的一種查詢的方法,這里的orders
是訂單表,你也可以改成別的什么表對於最終數據不會造成影響,除非你那個表的數據只有幾條那樣就會出現查不到日期的情況
SELECT
@date := DATE_ADD(@date, INTERVAL + 1 DAY) days
FROM
(
SELECT
@date := DATE_ADD("2019-06-05", INTERVAL - 1 DAY)
FROM
orders
LIMIT 30
) time
這是查詢后得出的日期列表
如果想要設置每次日期間隔為兩天可以將
@date := DATE_ADD(@date, INTERVAL + 1 DAY) days
- 1
這句把+1改成+2便可
如果是想要按月份排序可以這樣寫
SELECT
DATE_FORMAT(@date := DATE_ADD(@date, INTERVAL + 1 MONTH),'%Y-%m') as days
FROM
(
SELECT
@date := DATE_ADD("2019-01-01", INTERVAL - 1 MONTH)
FROM
orders
LIMIT 12
) time
當然也可以改成獲取前7天日期或者后一個月的日期等
例如
獲取指定日期的前7天
SELECT
@date := DATE_ADD(@date, INTERVAL + 1 DAY) days
FROM
(
SELECT
@date := DATE_ADD("2019-06-05", INTERVAL - 8 DAY)
FROM
orders
LIMIT 7
) time
獲取到時間后就可以根據時間進行與數據的聯查了
每日的日期聯查可以用 TO_DAYS()
方法
SELECT
days.days,
count(orders.order_id) AS num
FROM
(
SELECT
@date := DATE_ADD(@date, INTERVAL + 1 DAY) days
FROM
(
SELECT
@date := DATE_ADD("2019-05-05", INTERVAL - 1 DAY)
FROM
orders
LIMIT 30
) time
) AS days
LEFT JOIN orders ON TO_DAYS(orders.create_time) = TO_DAYS(days.days)
GROUP BY
days.days
這里是聯查出5月5號之后一個月時間內容每天的訂單量
如果在寫根據日期查詢數據的sql語句時有遇到什么問題歡迎留言給我,一起討論
</div>
原文:https://blog.csdn.net/guoqing2016/article/details/91038162