首页 > 解决方案 > SSIS 中与区域设置无关的 IsWeekEnd 表达式

问题描述

如何编写确定日期是否为周末的 SSIS 表达式?

我有这个表达,但它似乎只“在我的机器上工作”

DATEPART( "Weekday", @[User::CurrentDate] ) ==6 || DATEPART( "Weekday", @[User::CurrentDate] ) ==7

在我将 SSIS 包部署到服务器后,突然改变了数字的顺序,星期一变成了 2。

当在我的电脑上星期一是 1 时,完全符合我的预期。

我检查了 SQL Server 本身,但似乎是 SSIS 内部决定周日还是周一是第一天。

我找不到与此问题相关的确切问题。

SSIS 表达式

标签: ssis

解决方案


好吧,如果您必须在 SSIS 表达式中执行此操作,这是解决此问题的一种方法:您可以将变量的 DW 与已知常量的 DW 进行比较(例如 2019 年 8 月 3 日,这是任何一个星期六我知道的语言环境)。

在伪代码中, IF ( DW(DateVariable) = DW("20190803") OR DW(DateVariable) = (DW("20190803")+1)%7 ) THEN {DateVariable is a weekend}

就个人而言,我会寻找一种在 TSQL 中执行此操作的方法。将原始数据“按原样”导入临时表,然后在使用存储过程将数据移动到目标表的同时进行转换。


推荐阅读