雪花云数据平台-Cron Script,从特定时区的给定日期起,每14天执行一次作业



我想从特定日期和时区开始,每隔14天在CRON中执行一次作业。

例如,从6月24日起,每14天在CST时区。

每两周运行一次作业

简单的方法

最简单的方法就是创建一个任务,从你希望它第一次运行开始,每14天运行一次,比如:

CREATE TASK mytask_fortnightly
WAREHOUSE = general
SCHEDULE = '20160 MINUTE'
AS
SELECT 'Hello world'

它的工作原理

因为一小时有60分钟,一天有24小时,两周有14天,所以是20160分钟。

洞穴

上述解决方案不是从给定日期/时间起每两周运行一次任务,而是从创建任务起每两星期运行一次。

尽管这是最简单的方法,但它确实需要您名义上在场,才能在下一个计划的确切时间创建任务。

然而,作为一种变通方法,您可以创建一个一次性任务,以便在正确的日期/时间第一次为您完成此任务。这意味着你不必记住自己是清醒的/警觉的/在场的才能手动完成,之后你可以清理创建任务。

更难的方式

其他解决方案将要求您创建一个每周四运行的任务(由于2021-06-24是/曾经是周四,随后的每个周四要么是休息周,要么是两周(

例如SCHEDULE = 'USING CRON 0 0 * * THU'

然后你将添加特定的逻辑来确定哪一个是正确的两周

使用这种方法还将产生休息周的执行成本,以确定这一周是否正确。

Javascript SP

在javascript中,您可以通过从当前日期减去开始日期来确定这是否是正确的一周,如果不是14天的倍数,则将此作为短路SP的条件。

const deltaMs = (new Date) - (new Date('2021-06-24'));
const deltaDays = ~~(deltaMs / 86400000);
const run = deltaDays % 14 === 0;
if (!run) return;
// ... continue to do what you want.

SQL

您还可以在WHERE子句或IFF/CASE函数中使用以下SQL条件来检查是否需要两周时间。

DATEDIFF('day', '2021-06-24', CURRENT_DATE) % 14 = 0

相关内容

  • 没有找到相关文章

最新更新