自定義參數分為系統內置參數、自定義參數${..}、自定義參數$[...]、常量,不同類別的參數賦值格式及取值不同。本文為您介紹不同格式自定義參數的取值差異對比情況。

不同格式自定義參數的應用對比

以當前時間為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