Edited at

digdagでscheduleを変更した際は日付を扱う処理で注意が必要

scheduleをdailyからcronに変更した際に動作が変わった点があったので紹介します

digdagのバージョンはv0.9.39です

※スケジュール実行された場合の挙動であり、UIから自分でRUNした場合などは以下のような動きにはなりません


daily.dig

timezone: 'Asia/Tokyo'

schedule:
daily>: 14:00:00

+task:
sh>: echo ${moment(session_time).add(-1, 'hour').format("YYYYMMDD")}



cron.dig

timezone: 'Asia/Tokyo'

schedule:
cron>: "0 14 * * *"

+task:
sh>: echo ${moment(session_time).add(-1, 'hour').format("YYYYMMDD")}


どちらも毎日14時にsession_timeから1時間前の日付をYYYYMMDD形式で出力するワークフローですが、上記2つは異なる日付を出力します

「2019-09-11 14:00:00」実行分を例にすると


(1)dailyで実行の場合

session_timeは「2019-09-11T00:00:00+09:00」となります

そのため「20190910」が出力されます


(2)cronで実行の場合

session_timeは「2019-09-11T14:00:00+09:00」となります

そのため「20190911」が出力されます