自定义参数分为系统内置参数、自定义参数${..}、自定义参数$[...]、常量,不同类别的参数赋值格式及取值不同。本文为您介绍不同格式自定义参数的取值差异对比情况。

不同格式自定义参数的应用对比

以当前时间为2021年11月01日,任务每天00:00定时运行,示例不同格式自定义参数的赋值情况,具体如下表。
说明 假设代码引用方式均为pt=${datetime}
参数格式 描述 调度参数赋值 参数替换结果
${yyyymmdd} 获取业务时间。 datetime=${yyyymmdd} datetime=20211031
$[yyyymmddhh24miss] 获取定时时间,精确到秒。 datetime=$[yyyymmddhh24miss] datetime=20211101000000
$bizdate 获取业务时间。 datetime=$bizdate datetime=20211031
$cyctime 获取定时时间,精确到秒。 datetime=$cyctime datetime=20211101000000
$gmtdate 获取当前时间,精确到天。 datetime=$gmtdate datetime=20211101
$bizmonth 获取业务月份。 datetime=$bizmonth
  • 当业务时间与当前月份一致时,$bizmonth的值为当前时间上个月的月份。
  • 当业务时间与当前月份不一致时,$bizmonth的值为业务时间的月份。
示例当前时间为2021年11月01日
  • 如果业务时间为2021年11月02日(当前月份),则datetime=202110
  • 如果业务时间为2021年10月31日(非当前月份),则datetime=202110

${…}和$[…]参数的功能差异

${…}和$[…]参数的功能差异如下表所示。
对比项 ${…}参数 $[…]参数
时间基准 $bizdate的取值时间为基准参与运算。

$bizdate为业务日期,默认为当前时间的前一天。

$cyctime的时间为基准参与运算。

$cyctime为任务的定时调度时间。例如,任务的定时调度时间为当天的00:30,即时间格式为yyyy-mm-dd 00:30:00

补数据功能 补数据时选择的业务日期和调度参数的替换结果保持一致。 执行补数据时,调度参数替换结果为选择的业务日期+1天。

例如,补数据选择的业务日期为20220315,则执行补数据时,$cyctime参数的替换结果为20220316

时间精确度 精确到天。

取N年前、N月前等时间数据时,建议使用${...}自定义表达式。

精确到秒。

取N小时前、N分钟前等时间数据时,建议使用$[...]自定义表达式。例如:$[yyyymmdd-1-1/24]表示取前一天定时时间前一个小时对应的时间数据。

说明 $[…]参数不支持${yyyy-mm-dd-1/24}等用法,建议您使用$[yyyy-mm-dd-1-1/24]
本文以ODPS SQL节点为例,假设当前时间为2021年07月20日10时30分00秒,为您展示${…}和$[…]参数的时间取值配置,具体如下表。
时间取值 ${…}参数 $[…]参数
取年份:2021
  • 调度参数赋值:datetime=${yyyy}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${yyyy}=2021
  • 调度参数赋值:datetime=$[yyyy]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[yyyy]=2021
取年份:21
  • 调度参数赋值:datetime=${yy}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${yy}=21
  • 调度参数赋值:datetime=$[yy]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[yy]=21
取年份:2020
  • 调度参数赋值:datetime=${yyyy-1}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${yyyy-1}=2020
不支持
取月份:07
  • 调度参数赋值:datetime=${mm}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${mm}=07
  • 调度参数赋值:datetime=$[mm]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[mm]=07
取日期(天):20
  • 调度参数赋值:datetime=${dd}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${dd}=20
  • 调度参数赋值:datetime=$[dd]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[dd]=20
取日期:2021年06月20日
  • 调度参数赋值:datetime=${yyyy-mm-dd-29}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${yyyy-mm-dd-29}=2021-06-20
  • 调度参数赋值:datetime=$[add_months(yyyymmdd,-1)]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[add_months(yyyymmdd,-1)]=2021-06-20
取日期:2021年07月19日
  • 调度参数赋值:datetime=${yyyy-mm-dd}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${yyyy-mm-dd}=2021-07-19
  • 调度参数赋值:datetime=$[yyyy-mm-dd-1]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[yyyy-mm-dd-1]=2021-07-19
取日期:2020年07月20日
  • 调度参数赋值:datetime=${yyyy-mm-dd-364}
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=${yyyy-mm-dd}=2020-07-20
  • 调度参数赋值:datetime=$[add_months(yyyymmdd,-12*1)]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[add_months(yyyymmdd,-12*1)]=2020-07-20
取时间:10:30:00 不支持
  • 调度参数赋值:datetime=$[hh24:mi:ss]
  • 代码引用:pt=${datetime}
  • 参数替换结果:pt=$[hh24:mi:ss]=10:30:00
取时间:2021-07-20 10:30:00 不支持
  • 调度参数赋值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss]
    说明 您需要自定义两个参数datetime1和datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}
  • 参数替换结果:
    • datetime1=$[yyyy-mm-dd]=2021-07-20
    • datetime2=$[hh24:mi:ss]=10:30:00
    • pt=2021-07-20 10:30:00
取时间:2021-07-20 10:29:00 不支持
  • 调度参数赋值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24/60]
    说明 您需要自定义两个参数datetime1和datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}
  • 参数替换结果:
    • datetime1=$[yyyy-mm-dd]=2021-07-20
    • datetime2=$[hh24:mi:ss-1/24/60]=10:29:00
    • pt=2021-07-20 10:29:00
取时间:2021-07-20 09:30:00 不支持
  • 调度参数赋值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24]
    说明 您需要自定义两个参数datetime1和datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}
  • 参数替换结果:
    • datetime1=$[yyyy-mm-dd]=2021-07-20
    • datetime2=$[hh24:mi:ss-1/24]=09:30:00
    • pt=2021-07-20 09:30:00
取前一天时间,精确到秒,且年月日与时分秒之间无空格:

2021071910:30:00

不支持
  • 调度参数赋值:datetime=$[yyyymmddhh24miss-1]
  • 代码引用:pt=${datetime}
  • 参数替换结果:
    • datetime=$[yyyymmddhh24miss-1]=2021071910:30:00
    • pt=2021071910:30:00
取前一天时间,精确到秒,且年月日与时分秒之间有空格:

20210719 10:30:00

不支持
重要 调度参数赋值表达式中不支持空格,您可以使用两个调度参数,然后在代码引用时使用空格进行拼接。
  • 调度参数赋值:datetime1=$[yyyymmdd-1] datetime2=$[hh24:mi:ss]
    说明 您需要自定义两个参数datetime1和datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}
  • 参数替换结果:
    • datetime1=$[yyyymmdd-1]=2021-07-19
    • datetime2=$[hh24:mi:ss]=10:30:00
    • pt=20210719 10:30:00