You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse Pipeline日期表达式:周一/周二仍返回上周一

解决方案

你可以通过Azure表达式的if条件判断实现需求,以下是优化后的代码:

@{formatDateTime( subtractFromTime( utcNow(), if( lessOrEquals(dayOfWeek(utcNow()), 2), add(sub(dayOfWeek(utcNow()),1),7), sub(dayOfWeek(utcNow()),1) ), 'Day' ), 'yyyy-MM-dd 00:00:00' )}

逻辑说明

  1. 星期判断:使用lessOrEquals(dayOfWeek(utcNow()), 2)识别当前是周一(dayOfWeek返回1)或周二(返回2)
  2. 天数计算:
    • 若为周一/周二:在原本计算到本周一的天数(sub(dayOfWeek(utcNow()),1))基础上加7天,得到到上周一的总天数
    • 若为其他日期(周三到周日):保持原逻辑,计算到本周一的天数
  3. 格式化输出:最后统一将日期格式化为yyyy-MM-dd 00:00:00

简化易读写法

也可以用变量提取公共逻辑,让代码更清晰:

@{
    var dow = dayOfWeek(utcNow());
    var daysToSubtract = if(lessOrEquals(dow, 2), dow + 6, dow - 1);
    formatDateTime(subtractFromTime(utcNow(), daysToSubtract, 'Day'), 'yyyy-MM-dd 00:00:00')
}

内容的提问来源于stack exchange,提问作者mullinsjo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:50:19