在DB2中,使用sql 计算想要的日期值,比如昨天,上月的最后一天,下个月的最后一天等。
/*
作者:宾晓辰
微信:BD_BXC
MAIL:646501050@QQ.COM
PHONE:18026268607
日期:20210330
*/
create OR REPLACE function get_L1D_YYYYMMDD ( statis_date int)
–L1D_YYYYMMDD 昨天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(TO_DATE(STATIS_DATE,‘YYYYMMDD’) -1 DAYS,‘YYYYMMDD’);
SELECT get_L1D_YYYYMMDD(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_YYYYMM ( statis_date int)
–YYYYMM --本月
returns int
language sql
deterministic
no external action
contains sql
return SUBSTR(STATIS_DATE,1,6);
SELECT get_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_M01_YYYYMMDD ( statis_date int)
–M01_YYYYMMDD --本月第一天
returns int
language sql
deterministic
no external action
contains sql
return SUBSTR(STATIS_DATE,1,6)||‘01’;
SELECT get_M01_YYYYMMDD(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_M31_YYYYMMDD ( statis_date int)
–M31_YYYYMMDD --本月最后一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(SUBSTR(STATIS_DATE,1,4)||‘0101’,‘YYYYMMDD’),1)-1 DAYS,‘YYYYMMDD’);
SELECT get_M31_YYYYMMDD(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_L1M_YYYYMM ( statis_date int)
–L1M_YYYYMM --上个月
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(STATIS_DATE,‘YYYYMMDD’),-1),‘YYYYMM’);
SELECT get_L1M_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_L1MD01_YYYYMMDD ( statis_date int)
–L1MD01_YYYYMMDD --上月第一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(STATIS_DATE,‘YYYYMMDD’),-1),‘YYYYMM’) ||‘01’;
SELECT get_L1MD01_YYYYMMDD(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_L1MD31_YYYYMMDD ( statis_date int)
–L1MD31_YYYYMMDD --上月最后一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(SUBSTR(STATIS_DATE,1,6)||‘01’,‘YYYYMMDD’),1)-1 DAYS,‘YYYYMMDD’);
SELECT get_L1MD31_YYYYMMDD(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_F1M_YYYYMM ( statis_date int)
–F1M_YYYYMM --下月
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(STATIS_DATE,‘YYYYMMDD’),1),‘YYYYMM’);
SELECT get_F1M_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_F1MD01_YYYYMM ( statis_date int)
–F1MD01_YYYYMM --下月第一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(STATIS_DATE,‘YYYYMMDD’),1),‘YYYYMM’) ||‘01’;
SELECT get_F1MD01_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_F1MD31_YYYYMM ( statis_date int)
–F1MD31_YYYYMM --下月最后一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(SUBSTR(STATIS_DATE,1,6)||‘01’,‘YYYYMMDD’),2)-1 DAYS,‘YYYYMMDD’);
SELECT get_F1MD31_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_F2M_YYYYMM ( statis_date int)
–F2M_YYYYMM --下下月
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(STATIS_DATE,‘YYYYMMDD’),2),‘YYYYMM’);
SELECT get_F2M_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_F2MD01_YYYYMM ( statis_date int)
–F2MD01_YYYYMM --下下月第一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(STATIS_DATE,‘YYYYMMDD’),2),‘YYYYMM’) ||‘01’;
SELECT get_F2MD01_YYYYMM(‘20210228’) FROM T_BXC_BASE ;
create OR REPLACE function get_F2MD31_YYYYMM ( statis_date int)
–F2MD31_YYYYMM --下下月最后一天
returns int
language sql
deterministic
no external action
contains sql
return TO_CHAR(ADD_MONTHS(TO_DATE(SUBSTR(STATIS_DATE,1,6)||‘01’,‘YYYYMMDD’),3)-1 DAYS,‘YYYYMMDD’);
SELECT get_F2MD31_YYYYMM(‘20210228’) FROM T_BXC_BASE ;