DataWorks Cron表达式

更新时间:
复制为 MD 格式

本文为您介绍DataWorks Cron表达式语法。

功能介绍

重要

调度时间的自定义表达式为邀测功能,您可以联系技术支持申请使用该功能。

DataWorks支持使用表单自定义表达式方式来定义任务的调度时间,调度时间的功能介绍详见时间属性配置。调度时间基于 CronSequenceGenerator实现Cron表达式解析,支持Spring标准Cron格式。同时,根据实际调度场景进行了功能扩展,可实现月末最后一天和每月第几个星期几等场景。

注意:表单模式和自定义表达式模式不支持相互转换,转换后调度时间会自动调整为默认值(00 00 00 * * ?),需重新配置。

其中,使用Cron表达式可以实现更灵活的调度时间定义,例如:

  • 指定具体日期

  • 月末处理(如 L

  • 多个值组合(如 1,3

  • 最后一周几(L)、第 N 个星期几等(#

当前版本使用 6 位格式,结构如下:

秒 分 时 日 月 周

示例:每月的 1 号、3 号 的 01:00:00 触发任务。

00 00 01 1,3 * ?
重要
  • 当前版本中不支持秒级别的调度配置,因此,第一位秒级需固定配置为00。

  • 不支持“年”字段,所有任务默认每年循环执行。

字段说明

位置

字段名

取值范围

允许特殊字符

说明

1

秒(Seconds)

00

-

不支持修改

2

分(Minutes)

0-59

, - * /

-

3

时(Hours)

0-23

, - * /

24 小时制

4

日(Day of Month)

1-31

, - * / L

表示月中的日期,其中L表示月末最后一天

5

月(Month)

1-12 

, - * /

-

6

周(Day of Week)

  • 单独使用:0-6 

  • L#配合使用:1-7

重要

不支持英文缩写(如 FRIMON)或全称

, - * / L #

  • 单独使用:0=星期日、1=星期一、7=星期六

  • L#配合使用:

    • 6L:每月最后一个周五

    • 5#1:第一个星期四

特殊字符

字符

名称

说明

*

通配符

表示所有可能的值。例如,在字段中使用*表示每小时。

?

不指定

用于字段,表示不关心该字段的取值。例如,若仅需按周(如每周一)执行,则字段应设为?

-

范围

表示一个连续的范围。例如,10-12字段中表示10点、11点和12点。

,

列表

表示一个离散的值列表。例如,1,3,5字段中表示1号、3号和5号。

/

步长

定义值的增量。例如,0/15字段中表示从0分开始,每15分钟一次。

L

Last

  • 字段中,L表示当月的最后一天。

  • 字段中,L表示当月的最后一个周x。需与数字配合使用,如6L。

#

Nth Day

用于字段,格式为A#B,表示当月的第B个周A。例如,4#1表示当月第一个周三。

语法详解与示例

1. 枚举多个日期:,

00 00 00 1,15 * ?
每月 1 号和 15 号 00:00:00 执行(常用于双薪日、对账)

2. 使用 L:月末或最后一周几

00 00 00 L * ?
每月最后一天 00:00:00 执行(月末结算)
00 00 00 * * 7L
每月最后一个周六 00:00:00 执行
00 00 00 ? * 2L
每月最后一个周一 00:00:00 执行

3. 使用 #:第 N 个星期几

00 00 00 ? * 3#2
每月第二个周二 00:00:00 执行
00 00 00 * * 6#3
每月第三个周六 00:00:00 执行
⚠️ 若该月不存在第 5 个周六,则跳过当月

4. 组合写法(推荐用于复杂调度)

00 00 00 1,3 * 6L
在每月的 1 号、3 号 和 最后一个周五 的 00:00:00 触发任务

典型应用场景

cron表达式

描述

00 00 02 * * ?

每日凌晨2点整执行。

00 15 10 * * ?

每日上午1015分执行。

00 0/5 14-15 * * ?

每日14:0015:00期间,每5分钟执行一次。

00 00 01 ? * 1

每周一的凌晨1点整执行。

00 00 02,4 ? * 4

每周四的2点整和4点整执行。

00 00 02 L * ?

每月最后一天的凌晨2点整执行。

00 00 02 ? * 6L

每月最后一个周五的凌晨2点整执行。

00 00 01 ? * 4#1

每月第一个周三的凌晨1点整执行。

00 00 01 3 * 4#1

每月的3号和第一个周三的凌晨1点整执行。