sql - 当前日期减一,日期定义为字符串
问题描述
我有一个where
这样的 SQL 子句:
AND (((@Shift = 1
AND QtyHistoryDetails.stgtxndate
BETWEEN (CONVERT(CHAR(10), @StartDate, 101)) + ' 6:00:00'
AND (CONVERT(CHAR(10), @StartDate, 101)) + ' 14:30:00')
OR (@Shift = 2
AND QtyHistoryDetails.stgtxndate
BETWEEN (CONVERT(CHAR(10), @StartDate, 101)) + ' 14:00:00'
AND (CONVERT(CHAR(10), @StartDate, 101)) + ' 22:30:00')
OR (@Shift = 3
AND QtyHistoryDetails.stgtxndate
BETWEEN (CONVERT(CHAR(10), @StartDate, 101)) + ' 23:00:00'
AND (CONVERT(CHAR(10), @StartDate, 101)) + ' 6:30:00')))
AND cpdPressResource IS NOT NULL
AND cpdmold IS NOT NULL
AND cpdCavities IS NOT NULL
我专注于SHIFT = 3
:我需要一种方法来从@shift3
负 1 天中提取数据,以显示从前一天到选择日期的数据。这可能吗?
解决方案
目前还不是 100% 清楚解决这个问题的最佳方法是什么。您已脱离上下文执行查询的一部分。而且您没有提供任何样本数据或期望的结果。
我认为你可以这样做:
OR (@Shift = 3 AND
QtyHistoryDetails.stgtxndate >= CONVERT(CHAR(10), @StartDate, 101)) + ' 23:00:00' AND
QtyHistoryDetails.stgtxndate < CONVERT(CHAR(10), DATEADD(DAY, 1, @StartDate), 101)) + ' 6:30:00'
)
老实说,SQL Server 允许您将两个datetime
值相加。因此,如果@StartDate
声明为 a datetime
,您可以使用:
OR (@Shift = 3 AND
QtyHistoryDetails.stgtxndate >= @StartDate + ' 23:00:00' AND
QtyHistoryDetails.stgtxndate < DATEADD(DAY, 1, @StartDate) + ' 6:30:00'
)
推荐阅读
- python - 不在终端输出。终端中没有要求输入
- python - 数据框中的计算
- nginx - Ingress Nginx - 如何将资产提供给应用程序
- html - 检查值后表达式已更改
- javascript - Javascript String Concat函数问题
- html - 一个 flexbox 问题,即使我有一个最大宽度的容器,它也会挤压一切
- arduino - 对于具有 3 个或更多传感器的项目,我应该使用 Raspberry Pi 还是 Arduino
- java - 将位图图像保存到内部存储 - 权限被拒绝
- java - AVD 管理器无法加载已安装的系统映像
- javascript - 如果参数或参数为空