在DB2中,使用sql 计算昨天、最后一天等日期

本文介绍了如何在DB2数据库中使用SQL函数来获取特定日期,如昨天、上个月最后一天、下个月第一天等。通过创建一系列自定义函数,例如get_L1D_YYYYMMDD、get_M31_YYYYMMDD等,实现了日期计算的便捷操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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 ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值