最近開發遇到乙個需求,需要統計一段時間內每天的各種資料,發現某天沒有的資料沒法顯示出來,所以這時候用一張日曆表去聯合查詢即能獲得每天的資料
建立日曆表用到adddate這個系統函式,這個函式會自動為給定的日期新增指定的時間間隔,
adddate('2017-06-20',1) 會得出2017-06-21,利用這個功能,給指定的日期迴圈新增比如10000,即能得到指定日期後10000天的資料
create table num (i int);-- 建立乙個表用來儲存0-9的數字
insert into num (i) values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的數字,方便以後計算時間
insert into calendar(datelist) select
-- 利用下面計算出0-100000的數字依次新增指定時間間隔,即得2017-06-21後100000天的日曆表
adddate(
( -- 這裡的起始日期,你可以換成當前日期
date_format("2017-06-21", '%y-%m-%d')
numlist.id
) as `date`
from
-- 這邊利用笛卡爾積計算出 0 - 100000 依次各個資料
select
n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 as id
from
num n1
cross join num as n10
cross join num as n100
cross join num as n1000
cross join num as n10000
) as numlist;
參考鏈結
順便統計每天日期的寫法
select count(id) as cid, date_format(create_time, '%y-%m-%d') as t from table group by t
SQL server自動建立日曆表。
做 功能需要統計每個月的上班天數,節假日因為每年的日期都不一樣,所以需要自己手動更新這些節假日 1 首先先自動建立乙個日曆表,選擇開始年月日和結束的年月日 不要同時執行,先執行建立表之後 create table dbo time dimension time id int identity 1,1...
MySQL 8 0 11 生成日曆表
mysql的date 資料類支援的時間範圍是 1000 1 1 到9999 12 31,通過計算可以知道最大支援天數為3287181天屬於百萬級別的。mysql select datediff 9999 12 31 1000 01 01 days days 3287181 1 row in set ...
小程式日曆表
頁面 取消確定 年 月 js component 元件的初始資料 data lifetimes detached function 元件的方法列表 methods 確認選擇 sure function e 展示彈框 show function e 滑動更改 bindchange function e...