ssis - 有没有办法编写 DateAdd 和 DatePart SSIS 表达式以始终使用 Getdate() 生成 ThisWeekMonday 的日期?
问题描述
我有一个需要每周一运行的包,因为文件日期都有发送它的每周的星期一日期。如果包由于某种原因失败,我希望我以这样一种方式编写它,以便其他人可以在一周中的任何其他日期重新运行它。无论在哪一天运行,它都必须生成每周星期一的日期以获取正确的文件。
我尝试使用以下表达式,但它在星期一运行时生成了上周的星期一日期:
DATEADD( "dd", -1 - (DATEPART("dw", GETDATE()) + 4) % 7, GETDATE() ).
我多次更改参数,但仍然无法正常工作。
有人给了我这个表达式,但是即使更改了参数,星期一也完全不起作用:
DATEADD( "dd", (DATEPART( "dw", GETDATE() ) -3), GETDATE() )
最后,我尝试使用以下语句,它等效于 SQL 中的 Case 语句,但它在下面显示的每一行的第一部分给了我一个错误(注意:方括号不包括在内。)
[ DATEPART( "dw", GETDATE()) ]
请参阅下面的完整表达:
DATEPART( "dw", GETDATE()) == 1 ? DATEADD( "dd", 1, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 2 ? DATEADD( "dd", 0, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 3 ? DATEADD( "dd", -1, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 4 ? DATEADD( "dd", -2, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 5 ? DATEADD( "dd", -3, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 6 ? DATEADD( "dd", -4, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 7 ? DATEADD( "dd", -5, GETDATE()) ))))))
谁能帮我解决这个问题?
提前致谢。
解决方案
使用以下表达式:
DateAdd("dd", 2 - DatePart("dw", GetDate()) , GetDate())
解释一下,2(即星期一)- 一周中的任何其他日子都会为您提供可以添加到当天的日期偏移量。
例如 2(星期一)- 6(星期五)= -4 所以在星期五加上 -4 天给你星期一。
希望这可以帮助。
推荐阅读
- javascript - 使用jwt身份验证登录后如何重定向
- java - 在 zip 文件中插入已经放气的文件
- spring - Spring 版本从 3.0.3.Release 升级到 4.0.3.Release
- excel - 用于创建数据透视表的 Excel 宏在 Windows 上运行良好,而不是在 Mac 上
- python - 追加到列表中的字典
- android - 在没有上下文的情况下开始活动
- kubernetes - 如何从 Kubernetes 集群中删除已弃用的特定 API 资源版本?
- php - Twitter api - 可以发帖吗?
- tfs - 如何向 TFS 2018 中的任务工作项添加新的活动类型
- python - 如何在 Django Admin 中显示字段中的多个对象