sql-server - 根据星期几控制 SP 代码流
问题描述
我有一个 SSIS 包,它执行一个包含条件的 SP:
if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6)
return 0
...
我期待如果是星期一、星期三或星期五,那么 SP 会继续做事,否则它会return 0
,仅此而已。
然而,这个条件似乎每天都成功,并且 SP 总是返回 0 并且什么都不做。我很困惑。
我如何让它识别 MWF 并继续,否则停止?
谢谢
解决方案
错误(如果我正确理解您的问题)在于您的病情逻辑。我的猜测是你实际上需要AND
s 而不是OR
s。可以简化为IN
/ NOT IN
:
declare @dw smallint
set @dw = DATEPART(dw,GETDATE())
if @dw in (1, 3, 5, 7)
return 0
或者
...
if @dw not in (2, 4, 6)
return 0
请注意,有一个DATE_FIRST选项可以更改工作日顺序(数字)。
PS 一些描述:
if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6)
这个条件总是正确的,因为一天不能同时是一周的第 2 天、第 4 天和第 6 天。如果是一周的第二天,则第一个条件“失败”,而下一个条件成功,因为2 != 4
.
推荐阅读
- typescript - 用于处理数据库模式默认值的 Typescript 实用程序类型
- python-3.x - 在 cmd 中使用“pip install ...”安装任何模块时出错
- angular - Angular 10+ 构建到绝对路径缺少 de index.html 文件
- c# - 未加载视图
- javascript - 我在 mvc Web 应用程序上的提交按钮有问题
- css - 创建扩展 Tailwind css 类的类
- highcharts - Highcharts:同一窗格中具有不同 Y 轴的多个图表?
- c# - 如何使用键中的点添加到路由值元素
- javascript - 单击链接时,React 使用 ref 滚动到特定组件
- pandas - 熊猫中两个数据框的瀑布图