MySQL 獲取查詢兩日期之間的所有月份、天數、小時數(包含無數據的月份、天數、小時)


這里主要使用left join,將所有日期放在左邊列出,然后再根據日期時間匹配貼上數據。

 

示例:獲取10月份的所有日期;

select r1.Idxdate,max(t2.val) from
(SELECT
	@num :=@num + 1 AS Idx,
	date_format(
		adddate(
			'2018-09-30',
			INTERVAL @num DAY
		),
		'%Y-%m-%d'
	) AS Idxdate
FROM
	station_0.tyc_10000,
	(SELECT @num := 0) t
WHERE
	adddate(
		'2018-09-30',
		INTERVAL @num DAY
	) < date_format('2018-10-31', '%Y-%m-%d')) r1

left join dbo.table2 t2
on r1.Idxdate = DATE_FORMAT(t2.datetime,'%Y-%m-%d')
group by r1.Idxdate

 

運行結果:

 

同理,可以查詢月份、或小時、分鍾等;

但,一定要注意、一定要注意、一定要注意

數據表中的數據記錄總條數一定要大於查詢結果的記錄條數;

什么意思呢?

例如上圖查詢一個月中的每一天的最大數據值,10月有31天,如果該數據表總的歷史記錄只有20條(沒超過31條),那么你執行該語句查詢的結果最多也只有20條,即從10月1日到10月20日。

 


免責聲明!

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



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