如何用SQL生成一張日期維度表?
?問題描述
輸入想要生成日歷的年份,通過調(diào)用存儲(chǔ)過程,即可生成該年的全部日歷。
創(chuàng)建表結(jié)構(gòu)
我們根據(jù)常見的日歷表來創(chuàng)建一個(gè)含有年,月,日,星期的日歷表,具體表結(jié)構(gòu)如下:
上面的表結(jié)構(gòu)中我們將年、月、星期、日等都按照日歷的形式顯示成單獨(dú)的列,末尾還添加了兩個(gè)默認(rèn)值,一個(gè)是刪除標(biāo)志,默認(rèn)為0表示不刪除,1表示刪除,時(shí)間戳取系統(tǒng)時(shí)間。
創(chuàng)建存儲(chǔ)過程
要調(diào)用參數(shù),一般使用存儲(chǔ)過程來傳參。下面我們根據(jù)需求創(chuàng)建一個(gè)存儲(chǔ)過程。
我們傳遞進(jìn)一個(gè)INT型的參數(shù)給存儲(chǔ)過程,表示年份,然后取這一年有多少天,從1月1日循環(huán)累加到12月31日,并將每天的相關(guān)信息都插入到表中,這樣一整年的完整日歷就完成了。
下面我們?cè)赟QL Server環(huán)境下開始寫這個(gè)存儲(chǔ)過程吧。
為了方便閱讀,已經(jīng)在每行代碼上方添加了注釋。對(duì)SQL系統(tǒng)函數(shù)不熟悉的可以搜索一下相關(guān)函數(shù)的用法。
調(diào)用存儲(chǔ)過程
驗(yàn)證結(jié)果
執(zhí)行完后我們查詢一下表CALENDAR_INFO里的數(shù)據(jù)
結(jié)果:
翻一下日歷表,2021-01-01這一天是星期五,說明我們寫的日歷表是正確的。
細(xì)心的朋友不知有沒有發(fā)現(xiàn),日歷表中缺少中國農(nóng)歷,感興趣的小伙伴可以思考一下該如何寫農(nóng)歷的部分。?