ssis - SSIS 中与区域设置无关的 IsWeekEnd 表达式
问题描述
如何编写确定日期是否为周末的 SSIS 表达式?
我有这个表达,但它似乎只“在我的机器上工作”
DATEPART( "Weekday", @[User::CurrentDate] ) ==6 || DATEPART( "Weekday", @[User::CurrentDate] ) ==7
在我将 SSIS 包部署到服务器后,突然改变了数字的顺序,星期一变成了 2。
当在我的电脑上星期一是 1 时,完全符合我的预期。
我检查了 SQL Server 本身,但似乎是 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 中执行此操作的方法。将原始数据“按原样”导入临时表,然后在使用存储过程将数据移动到目标表的同时进行转换。
推荐阅读
- c++ - 如何在保持最小距离的同时沿有限线随机采样?
- android - 将 dialogFragment 作为 LiveData 的参数传递
- javascript - 画布宽度和高度有时无法调整大小
- javascript - 为什么我的 IF 语句没有执行?以及为什么即使我插入了 clearStatement 调用,间隔仍会继续运行
- mongodb - MongoDB 多个嵌套组
- azure - 如何访问 Azure 管道中的环境变量?
- python - 是否可以在 Google TPU 上运行常规 python 代码?
- algorithm - 类似的代码,相同的功能,不知道它们有什么区别
- laravel - Laravel:如何在表单请求输入中记录错误
- javascript - 如何在 JS 变量中转义冒号?