在資料處理的過程中,有時候會碰到一些需要使用日曆的場景,在使用中碰到過的有
1.計算工作日(可以抽象一些理解為為不同日期的權重不一樣,工作日權重為1,其他為0)
2.計算財年、財務月、財務周(和自然日期有所不同)
3.利用日期區間展開一些計算(比如將某張賬單金額拆到賬單對應得乙個時間區間)
這裡記錄一段日曆表的生成hivesql,需要執行引擎裡有日期加減函式並支援cte語法
with tmp_num as (
select num from values
(0),(1)
,(2)
,(3)
,(4)
,(5)
,(6)
,(7)
,(8)
,(9)
t(num)
),number as(
select /*+mapjoin(num_10,num_100,num_1000,num_10000)*/
num_0.num+num_10.num*10+num_100.num*100+num_1000.num*1000+num_10000.num*10000 as number
from tmp_num num_0
join tmp_num num_10
join tmp_num num_100
join tmp_num num_1000
join tmp_num num_10000
),calendar as(
select dateadd(to_date('19900101','yyyymmdd'),number,'dd') as day
from number
)select to_char(day,'yyyymmdd') as dt
,to_char(day,'yyyymm') as dt_month
,to_char(day,'yyyy') as dt_year
from calendar
;
對於財年、財務月、財務周的計算,我們可以採用這樣一種方法:
假如公司在4月開啟新的乙個財年(新財年年份與自然年相同)
例:2023年3月31日為2019財年,2023年4月1日為2020財年
則可以通過將日期減去3個月,取減去後日期年份的方式得到其財年
select to_char(day,'yyyymmdd') as dt
,to_char(day,'yyyymm') as dt_month
,to_char(day,'yyyy') as dt_year
,to_char(dateadd(day,-3,'mm'),'yyyy') as fsl_dt_year
from calendar
;
財務月、財務周也可以用類似方法處理 mysql 日曆表 mysql建立日曆表
最近開發遇到乙個需求,需要統計一段時間內每天的各種資料,發現某天沒有的資料沒法顯示出來,所以這時候用一張日曆表去聯合查詢即能獲得每天的資料 建立日曆表用到adddate這個系統函式,這個函式會自動為給定的日期新增指定的時間間隔,adddate 2017 06 20 1 會得出2017 06 21,利...
Qlikview指令碼生成日曆表
多數情況下dw會給報表輸出一張比較全的標準日曆表,如果是這樣的情況,那麼可以直接從dw中讀取,所以我要寫的是dw中沒有提供並且從事實資料中提取並不完整或者太耗資源的情況,其實是可以通過指令碼自動生成乙份標準日曆表,下面就介紹一下思路。定義變數 let vdatemin num makedate 20...
小程式日曆表
頁面 取消確定 年 月 js component 元件的初始資料 data lifetimes detached function 元件的方法列表 methods 確認選擇 sure function e 展示彈框 show function e 滑動更改 bindchange function e...