您可以在离线SQL任务中使用公共日历内建函数进行相关的日期计算。本文为您提供公共日历支持的内建函数的命令格式、参数说明及示例,指导您使用公共日历内建函数。
使用限制
仅支持在离线SQL代码中使用。
内建函数目录
公共日历支持的内建函数如下:
函数 | 功能 |
计算离 | |
计算离 | |
计算公共日历 | |
计算公共日历 | |
计算公共日历 | |
计算返回在公共日历 | |
计算在公共日历 | |
计算在公共日历 |
dpc_last_workday
命令格式:
string dpc_last_workday(string "calendar_code",string "business_date",int day_offset=1)
命令说明:
计算离
business_date
最近的第day_offset
个工作日。参数说明:
calendar_code:公共日历编码,String类型。
label_code:标签编码,String类型。
business_date:任意业务日期,String类型,格式为yyyyMMdd。
periods:周期个数,Int类型,默认为
1
,有效值为1d <= day_offset <= 7305d(20 年)
或1m <= day_offset <= 240m
或1y <= day_offset <= 20y
。timeFormat:周期类型,默认为
d
,允许的类型有:日:
d
。月:
m
。年:
y
。
返回值说明:
返回在公共日历
calendar_code
中在business_date
之前,离business_date
最近periods
个日\月\年周期内的所有包含label_code
标签的工作日。如果business_date
本身就是工作日,则business_date
算作第 1 个工作日。示例:
select dpc_last_labelled_workdays('finance_calendar','chrismas_day' ,'20231126'); --返回 20231124 select dpc_last_labelled_workdays('finance_calendar', 'chrismas_day' ,'20231127'); --返回 20231127 select dpc_last_labelled_workdays('finance_calendar', 'chrismas_day' ,'20231127', 5); --返回 20231121,20231122,20231123,20231124,20231125 select dpc_last_labelled_workdays('finance_calendar', 'chrismas_day' ,'20231127', m, 1); --返回 20231030...20231127
dpc_last_label_date
命令格式:
string dpc_last_label_date(string "calendar_code",string "business_date",string "label_code",int day_offset=1)
命令说明:
计算离
business_date
最近的第day_offset
个包含标签label_code
的日期。参数说明:
calendar_code: 公共日历编码, String类型。
business_date: 任意业务日期,String类型,格式为
yyyyMMdd
。label_code:标签编码,String类型。
day_offset:最近的第几个日期,Int类型,默认为
1
,有效值为1 <= day_offset <= 7305(20 年)
。
返回值说明:
返回在公共日历
calendar_code
中在business_date
之前,离business_date
最近第day_offset
个包含标签label_code
的日期。如果business_date
本身就包含标签label_code
,则business_date
为第1个日期。返回类型为String,格式为yyyyMMdd
。示例:
select dpc_last_label_date('finance_calendar', '20231230', 'chrismas_day'); --返回 20231225 select dpc_last_label_date('finance_calendar', '20231225', 'chrismas_day'); --返回 20231225 select dpc_last_label_date('finance_calendar', '20231230', 'chrismas_day', 2); --返回 20221225
dpc_is_labelled
命令格式:
boolean dpc_is_labelled(string "calendar_code",string "business_date",string "label_code")
命令说明:
计算公共日历
calendar_code
中business_date
是否有label_code
标签。参数说明:
calendar_code:公共日历编码,String类型。
business_date:任意业务日期,String类型,格式为
yyyyMMdd
。label_code:标签编码,String类型。
返回值说明:
返回在公共日历
calendar_code
中business_date
是否有label_code
标签,有该标签返回True
,无则返回False
。示例:
select dpc_is_labelled('finance_calendar', '20231225', 'chrismas_day'); --返回 True
dpc_is_workday
命令格式:
boolean dpc_is_workday(string "calendar_code",string "business_date")
命令说明:
计算公共日历
calendar_code
中business_date
是否为工作日。参数说明:
calendar_code:公共日历编码,String类型。
business_date:任意业务日期,String类型,格式为
yyyyMMdd
。
返回值说明:
返回在公共日历
calendar_code
中business_date
是否为工作日,是工作日则返回True
,为假日则返回False
。示例:
select dpc_is_workday('finance_calendar', '20231128'); --返回 True select dpc_is_workday('finance_calendar', '20231202'); --返回 False
dpc_last_workdays
命令格式:
string dpc_last_workdays(string <calendar_code>,string <business_date>,int <periods>, string <timeFormat>)
命令说明:
计算公共日历
calendar_code
中在business_date
之前,离business_date
最近的periods
个日/月/年周期内的所有工作日。参数说明:
calendar_code:公共日历编码,String类型。
business_date:任意业务日期,String类型,格式为
yyyyMMdd
。periods:周期个数,Int类型,默认为
1
,有效值为1d <= day_offset <= 7305d(20 年)
或1m <= day_offset <= 240m
或1y <= day_offset <= 20y
。timeFormat:周期类型,默认为
d
,允许的类型有:日:
d
。月:
m
。年:
y
。
返回值说明:
返回在公共日历
calendar_code
中在business_date
之前,离business_date
最近periods
个日/月/年周期内的所有工作日。如果business_date
本身就是工作日,则business_date
算作第1个工作日。示例:
select dpc_last_workdays('finance_calendar', '20231126'); --返回 20231124 select dpc_last_workdays('finance_calendar', '20231127'); --返回 20231127 select dpc_last_workdays('finance_calendar', '20231127', 5); --返回20231121,20231122,20231123,20231124,20231125 select dpc_last_workdays('finance_calendar', '20231127', m, 1); --返回 20231030...20231127
dpc_workdays
命令格式:
string dpc_workdays(string <calendar_code>,string <startdate>,string <enddate>)
命令说明:
计算返回在公共日历
calendar_code
中在startdate
(包含)之后,enddate
(包含)之前的所有工作日。参数说明:
calendar_code: 公共日历编码,String类型。
startdate: 任意起始业务日期,String类型,格式为
yyyyMMdd
。enddate: 任意结束业务日期,String类型,格式为
yyyyMMdd
。重要有效值为
enddate - startdate <= 20年
。
返回值说明:
返回在公共日历
calendar_code
中在startdate
(包含)之后,enddate
(包含)之前,的所有工作日。如果business_date
本身就是工作日,则business_date
算作第 1 个工作日。示例:
select dpc_workdays('finance_calendar', '20231124', '20231126'); --返回 20231124 select dpc_workdays('finance_calendar', '20231126', '20231127'); --返回 20231127
dpc_last_labelled_workdays
命令格式:
string dpc_last_labelled_workdays(string <calendar_code>,string <label_code>,string <business_date>,int <periods>, string <timeFormat>)
命令说明:
计算在公共日历
calendar_code
中在business_date
之前,离business_date
最近的periods
个日/月/年周期内的所有包含label_code
标签的工作日。参数说明:
calendar_code:公共日历编码,String类型。
label_code:标签编码,String类型。
business_date:任意业务日期,String类型,格式为yyyyMMdd。
periods:周期个数,Int类型,默认为
1
,有效值为1d <= day_offset <= 7305d(20 年)
或1m <= day_offset <= 240m
或1y <= day_offset <= 20y
。timeFormat:周期类型,默认为
d
,允许的类型有:日:
d
。月:
m
。年:
y
。
返回值说明:
返回在公共日历
calendar_code
中在business_date
之前,离business_date
最近periods
个日/月/年周期内的所有包含label_code
标签的工作日。如果business_date
本身就是工作日,则business_date
算作第1个工作日。示例:
select dpc_last_labelled_workdays('finance_calendar','chrismas_day' ,'20231126'); --返回 20231124 select dpc_last_labelled_workdays('finance_calendar', 'chrismas_day' ,'20231127'); --返回 20231127 select dpc_last_labelled_workdays('finance_calendar', 'chrismas_day' ,'20231127', 5); --返回 20231121,20231122,20231123,20231124,20231125 select dpc_last_labelled_workdays('finance_calendar', 'chrismas_day' ,'20231127', m, 1); --返回 20231030...20231127
dpc_labelled_workdays
命令格式:
string dpc_labelled_workdays(string <calendar_code>,string <label_code>,string <startdate>,string <enddate>)
命令说明:
计算在公共日历
calendar_code
中在startdate
(包含)之后,enddate
(包含)之前的所有lable_code
标签的工作日。参数说明:
calendar_code: 公共日历编码,String类型。
label_code: 标签编码,String类型。
startdate: 任意起始业务日期,String类型,格式为
yyyyMMdd
。enddate: 任意结束业务日期,String类型,格式为
yyyyMMdd
。重要有效值为
enddate - startdate <= 20年
。
返回值说明:
返回在公共日历
calendar_code
中在startdate
(包含)之后,enddate
(包含)之前,的所有lable_code
标签的工作日。如果business_date
本身就是工作日,则business_date
算作第1个工作日。示例:
select dpc_labelled_workdays('finance_calendar','chrismas_day','20231124', '20231126'); --返回 20231124,20231126 select dpc_labelled_workdays('finance_calendar','chrismas_day', '20231126', '20231127'); --返回 20231126,20231127