每两周运行一次工作
简单的方法
执行此操作的最简单方法是创建任务,从您希望它首次运行开始每 14 天运行一次,如下所示:
CREATE TASK mytask_fortnightly
WAREHOUSE = general
SCHEDULE = '20160 MINUTE'
AS
SELECT 'Hello world'
工作原理
因为一小时有 60 分钟,一天有 24 小时,两周有 14 天,所以是 20,160 分钟。
警告
上述解决方案不是从给定日期/时间每两周运行一次任务,而是从创建任务后每两周运行一次。
尽管这是最简单的方法,但它确实需要您名义上在场,以便在下一次计划的确切时间创建任务。
但是,作为一种解决方法,您可以创建一次性任务,以便在准确的日期/时间第一次为您执行此操作。这意味着您不必记住要醒来/提醒/出席自己手动执行此操作,并且您可以在之后清理创建任务。
更难的方法。
其他解决方案将要求您创建一个每周四运行的任务(因为 2021 年 6 月 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