任务参数语法参考
本页是任务参数的完整语法手册,包含系统内置参数、时间表达式和内置时间函数的详细说明。
⚠️ 注意:参数功能目前处于灰度阶段,仅对部分用户开放。 详见任务参数概述中的验证方法。
系统内置参数
系统预置了一系列常用参数,可直接用于参数赋值,无需手动计算。
⚠️ 内置参数不能在代码中直接引用,必须先在参数配置中赋值给自定义参数,再在代码中引用自定义参数。
日期时间类参数
| 参数名 | 格式 | 说明 | 示例(基准时间2023-09-22 18:00:00) |
|---|
bizdate
bizdate | yyyyMMdd | 业务日期(计划时间-1天) | 20230921 |
sys_biz_day
sys_biz_day | yyyy-MM-dd | 业务日期 | 2023-09-21 |
sys_biz_datetime
sys_biz_datetime | yyyy-MM-dd HH:mm:ss | 业务时间 | 2023-09-21 18:00:00 |
sys_plan_day
sys_plan_day | yyyy-MM-dd | 计划日期 | 2023-09-22 |
sys_plan_datetime
sys_plan_datetime | yyyy-MM-dd HH:mm:ss | 计划时间 | 2023-09-22 18:00:00 |
sys_plan_timestamp
sys_plan_timestamp | 13位时间戳 | 计划时间戳(毫秒) | 1695463200000 |
任务信息类参数
| 参数名 | 说明 | 示例 | 注意事项 |
|---|
sys_task_id
sys_task_id | 任务ID | 1002 | 仅调度运行时支持 |
sys_task_name
sys_task_name | 任务名称 | demo_task | 仅调度运行时支持 |
sys_task_owner
sys_task_owner | 任务负责人 | UAT_TEST | 仅调度运行时支持 |
使用示例
-- 使用业务日期过滤分区
SELECT * FROM table WHERE dt = '${dt}';
-- 参数配置:dt = sys_biz_day
-- 调度时间2023-09-22,实际执行:WHERE dt = '2023-09-21'
-- 使用计划时间戳
SELECT * FROM table WHERE create_time >= ${start_ts};
-- 参数配置:start_ts = sys_plan_timestamp
-- 结果:WHERE create_time >= 1695463200000
使用建议
- 业务日期场景:优先使用
bizdate
bizdate
或 sys_biz_day
sys_biz_day
- 需要时分秒:使用
sys_biz_datetime
sys_biz_datetime
或 sys_plan_datetime
sys_plan_datetime
- 时间戳计算:使用
sys_plan_timestamp
sys_plan_timestamp
- 审计日志:使用
sys_task_*
sys_task_*
系列参数记录任务信息
时间表达式
时间表达式支持灵活的时间格式化和偏移计算,是参数系统的核心功能。
基础语法
$[时间格式] # 基本格式化
$[时间格式, 偏移量] # 带偏移量
$[时间格式, 偏移1, 偏移2, ...] # 多个偏移量(按顺序依次计算)
时间格式元素
时间表达式遵循 ISO-8601 标准,严格区分大小写。
| 元素 | 含义 | 示例 |
|---|
yyyy
yyyy | 四位年份 | 2023 |
yy
yy | 两位年份 | 23 |
MM
MM | 两位月份(01-12) | 09 |
dd
dd | 两位日期(01-31) | 22 |
HH
HH | 24小时制小时(00-23) | 18 |
mm
mm | 分钟(00-59) | 59 |
ss
ss | 秒(00-59) | 49 |
.SSS
.SSS | 毫秒 | 0.377 |
ZZ
ZZ | 时区 | +08:00 |
⚠️ 常见错误:
YYYY
YYYY
(大写Y不支持)、
yyyy-mm-dd
yyyy-mm-dd
(小写m是分钟不是月份)、
hh
hh
(小写h是12小时制)。正确写法:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm:ss
。
常用格式组合
$[yyyy-MM-dd] → 2023-09-22
$[yyyyMMdd] → 20230922
$[yyyy/MM/dd] → 2023/09/22
$[yyyy-MM-dd HH:mm:ss] → 2023-09-22 18:00:00
$[yyyyMMddHHmmss] → 20230922180000
$[HH:mm:ss] → 18:00:00
$[yyyy-MM-dd HH:mm:ss.SSSZZ] → 2023-09-22 18:00:00.377+08:00
时间偏移量
| 单位 | 缩写 | 全称 | 示例 |
|---|
| 毫秒 | ms | milli/millisecond | 400ms |
| 秒 | s | sec/second | 30s |
| 分钟 | m | min/minute | 15m |
| 小时 | h | hour | 2h |
| 天 | d | day | -1d |
| 周 | w | week | -1w |
| 月 | mon | month | -1mon |
| 年 | y | year | -1y |
偏移量示例
$[yyyy-MM-dd, -1d] → 昨天
$[yyyy-MM-dd, 1d] → 明天
$[yyyy-MM-dd, -1mon] → 上个月今天
$[yyyy-MM-dd, -1y] → 去年今天
$[HH:mm:ss, -1h] → 1小时前
-- 多个偏移量(按顺序依次计算)
$[yyyy-MM-dd, -1y, -1mon, -1d] → 去年上个月昨天
$[yyyyMMdd, 1mon, -7d] → 下月退7天
内置时间函数
用于处理时间表达式无法直接表达的计算场景,如"本月第一天"、"上周日"等。
月份相关函数
first_day_of_month()
first_day_of_month()
— 当月第一天
first_day_of_month() # 默认格式 yyyy-MM-dd
first_day_of_month(format) # 指定格式
first_day_of_month(format, duration) # 带偏移量
-- 当月第一天
month_start = first_day_of_month() → 2023-09-01
-- 上月第一天
last_month_start = first_day_of_month('yyyy-MM-dd', '-1mon') → 2023-08-01
-- 自定义格式
month_start = first_day_of_month('yyyyMMdd') → 20230901
last_day_of_month()
last_day_of_month()
— 当月最后一天
last_day_of_month() # 默认格式 yyyy-MM-dd
last_day_of_month(format) # 指定格式
last_day_of_month(format, duration) # 带偏移量
-- 当月最后一天
month_end = last_day_of_month() → 2023-09-30
-- 上月最后一天
last_month_end = last_day_of_month('yyyy-MM-dd', '-1mon') → 2023-08-31
周相关函数
first_day_of_week()
first_day_of_week()
— 当周第一天(周一)
first_day_of_week() # 默认格式 yyyy-MM-dd
first_day_of_week(format) # 指定格式
first_day_of_week(format, duration) # 带偏移量
-- 本周一(假设当前2023-09-22 周五)
week_start = first_day_of_week() → 2023-09-18
-- 上周一
last_week_start = first_day_of_week('yyyy-MM-dd', '-1w') → 2023-09-11
last_day_of_week()
last_day_of_week()
— 当周最后一天(周日)
last_day_of_week() # 默认格式 yyyy-MM-dd
last_day_of_week(format) # 指定格式
last_day_of_week(format, duration) # 带偏移量
-- 本周日
week_end = last_day_of_week() → 2023-09-24
-- 上周日
last_week_end = last_day_of_week('yyyy-MM-dd', '-1w') → 2023-09-17
day_of_week()
day_of_week()
— 返回是周几
day_of_week() # 今天是周几(返回 1-7,1=周一,7=周日)
day_of_week(duration) # 偏移后是周几
weekday = day_of_week() → 5(周五)
weekday = day_of_week('-1d') → 4(昨天周四)
get_day_of_week()
get_day_of_week()
— 获取指定周几的日期
get_day_of_week(format, whichDay) # 本周的周几(1=周一,7=周日)
get_day_of_week(format, whichDay, duration) # 偏移后那周的周几
-- 本周二(假设当前2023-09-22 周五)
this_tuesday = get_day_of_week('yyyy-MM-dd', 2) → 2023-09-19
-- 上周三
last_wednesday = get_day_of_week('yyyy-MM-dd', 3, '-1w') → 2023-09-13
-- 下周五
next_friday = get_day_of_week('yyyy-MM-dd', 5, '1w') → 2023-09-29
week_of_month()
week_of_month()
— 本月第几周
week_of_month() # 今天在本月第几周(返回整数)
week_of_month(duration) # 偏移后在当月第几周
week_of_year()
week_of_year()
— 本年第几周
week_of_year() # 今天在本年第几周(返回整数)
week_of_year(duration) # 偏移后在当年第几周
时间戳函数
timestamp()
timestamp()
— 毫秒时间戳
timestamp() # 当前计划时间的毫秒时间戳(13位)
timestamp(offset1, offset2, ...) # 带偏移量
current_ts = timestamp() → 1695463200000(2023-09-22 18:00:00)
yesterday_ts = timestamp(-1d) → 1695376800000
biz_timestamp()
biz_timestamp()
— 业务时间戳(基于00:00:00)
biz_timestamp() # 今天00:00:00的毫秒时间戳(13位)
biz_timestamp(offset1, offset2, ...) # 带偏移量
today_start = biz_timestamp() → 1695312000000(2023-09-22 00:00:00)
yesterday_start = biz_timestamp(-1d) → 1695225600000
快速速查表
常用时间需求速查
| 需求 | 参数配置 | 示例结果(基准2023-09-22) |
|---|
| 今天 | $[yyyy-MM-dd]
$[yyyy-MM-dd] 或 sys_plan_day
sys_plan_day | 2023-09-22 |
| 昨天 | $[yyyy-MM-dd, -1d]
$[yyyy-MM-dd, -1d] 或 sys_biz_day
sys_biz_day | 2023-09-21 |
| 上周同一天 | $[yyyy-MM-dd, -7d]
$[yyyy-MM-dd, -7d] | 2023-09-15 |
| 上月同一天 | $[yyyy-MM-dd, -1mon]
$[yyyy-MM-dd, -1mon] | 2023-08-22 |
| 本月第一天 | first_day_of_month()
first_day_of_month() | 2023-09-01 |
| 本月最后一天 | last_day_of_month()
last_day_of_month() | 2023-09-30 |
| 上月第一天 | first_day_of_month('yyyy-MM-dd', '-1mon')
first_day_of_month('yyyy-MM-dd', '-1mon') | 2023-08-01 |
| 上月最后一天 | last_day_of_month('yyyy-MM-dd', '-1mon')
last_day_of_month('yyyy-MM-dd', '-1mon') | 2023-08-31 |
| 本周一 | first_day_of_week()
first_day_of_week() | 2023-09-18 |
| 本周日 | last_day_of_week()
last_day_of_week() | 2023-09-24 |
| 上周一 | first_day_of_week('yyyy-MM-dd', '-1w')
first_day_of_week('yyyy-MM-dd', '-1w') | 2023-09-11 |
| 上周日 | last_day_of_week('yyyy-MM-dd', '-1w')
last_day_of_week('yyyy-MM-dd', '-1w') | 2023-09-17 |
| 本周二 | get_day_of_week('yyyy-MM-dd', 2)
get_day_of_week('yyyy-MM-dd', 2) | 2023-09-19 |
| 去年昨天 | $[yyyy-MM-dd, -1y, -1d]
$[yyyy-MM-dd, -1y, -1d] | 2022-09-21 |
| 今天00:00时间戳 | biz_timestamp()
biz_timestamp() | 1695312000000 |
| 当前时间戳 | timestamp()
timestamp() | 1695463200000 |
时间函数速查
| 函数 | 功能 | 返回类型 |
|---|
first_day_of_month()
first_day_of_month() | 当月第一天 | 日期字符串 |
last_day_of_month()
last_day_of_month() | 当月最后一天 | 日期字符串 |
first_day_of_week()
first_day_of_week() | 当周第一天(周一) | 日期字符串 |
last_day_of_week()
last_day_of_week() | 当周最后一天(周日) | 日期字符串 |
day_of_week()
day_of_week() | 返回周几(1-7) | 整数 |
week_of_month()
week_of_month() | 本月第几周 | 整数 |
week_of_year()
week_of_year() | 本年第几周 | 整数 |
get_day_of_week()
get_day_of_week() | 获取指定周几的日期 | 日期字符串 |
timestamp()
timestamp() | 毫秒时间戳(基于计划时间) | 13位整数 |
biz_timestamp()
biz_timestamp() | 毫秒时间戳(基于00:00:00) | 13位整数 |
unix_timestamp()
unix_timestamp() | 秒时间戳 | 10位整数 |
biz_unix_timestamp()
biz_unix_timestamp() | 业务秒时间戳 | 10位整数 |
biz_format()
biz_format() | 业务时间格式化 | 字符串 |
相关文档