sqlserver中计算指定日期未在8小时工作日时间上架则为超时,不计算非工作时间
时间: 2024-09-23 18:07:44 浏览: 37
在SQL Server中,如果你想计算某个商品的上架时间是否超出正常工作日的8小时时间范围,可以使用`DATEDIFF`函数配合`CASE`语句来实现。假设有一个名为`Product_Inventory`的表,其中包含`ProductID`, `ShelfTime`(上架时间)等字段,你可以这样做:
```sql
CREATE TABLE Product_Inventory (
ProductID INT,
ShelfTime DATETIME
);
-- 示例数据插入
INSERT INTO Product_Inventory (ProductID, ShelfTime)
VALUES (1, '2023-03-01 10:00:00'), -- 正常工作日
(2, '2023-03-01 14:30:00'), -- 超出工作时间
(3, '2023-03-02 09:00:00'); -- 非工作日
-- 计算每个产品上架时间是否在工作日的8小时内
SELECT
ProductID,
ShelfTime,
CASE
WHEN DATEDIFF(HOUR, DATEADD(hour, 9, DATEADD(day, DATEDAY(ShelfTime), 0)), DATEADD(hour, -1, DATEADD(hour, 17, DATEADD(day, DATEDAY(ShelfTime), 0)))) <= 8 THEN '正常'
WHEN DATEDIFF(HOUR, DATEADD(hour, 9, DATEADD(day, DATEDAY(ShelfTime), 0)), ShelfTime) > 8 THEN '超时'
ELSE '非工作日'
END AS [Status]
FROM Product_Inventory;
```
上述查询会将每个产品的上架时间`ShelfTime`与工作日的8小时时间段进行比较,如果在8小时内,状态标记为"正常";如果超过8小时,状态标记为"超时";如果是非工作日(周末或其他非工作日),状态标记为"非工作日"。
阅读全文