mysql 根據日期進行查詢數據,沒有數據也要顯示空


寫這篇博客主要是記錄自己在對訂單進行按日期查詢時使用的一種查詢的方法,這里的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


    免責聲明!

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



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