gpt4 book ai didi

sql-server - 从日期字段中减去日期

转载 作者:行者123 更新时间:2023-12-03 09:35:44 26 4
gpt4 key购买 nike

原始问题

我需要编写一个 Microsoft SQL 语句,从另一个表的天数中减去一个日期。因此,本质上,表格示例如下:

Table 1 (date)           Table 2 (number of days)
2013-05-08 23:59:13.000 7
2013-05-08 23:59:16.000 7
2013-05-08 23:59:06.000 7

如有任何帮助,我们将不胜感激。

更新问题

我唯一需要处理的两项是以下信息:

enter image description here

我需要知道发票在发票队列中的时间。 TimeoutDate 是发票超时队列的时间,而 TimeOutDays 是队列在超时之前给出的天数长度,但它是工作日,因此不包括周末。

因此,如果您根据此信息进行计算,发票已在队列中等待 8 个工作日 <-- 这是我需要从查询中获得的答案。

额外信息

发票是04/30/2013进入系统的,但是由于webapp不计算发票进入系统的那天,所以超时计数器从次日开始,也就是05/1/2013。希望这解释得更清楚一点!

我有一个快速查询,但这没有用,因为它没有显示我需要的内容,但实际上下面是我需要的结果:

enter image description here

最佳答案

尝试

SELECT DATEADD(day, -(t2.days), t1.datefield) new_date
FROM table1 t1 JOIN
table2 t2 ON t1.id = t2.id

输出:

|                   NEW_DATE |
------------------------------
| May, 01 2013 23:59:13+0000 |
| May, 01 2013 23:59:16+0000 |
| May, 01 2013 23:59:06+0000 |

SQLFiddle

更新:完全改变的问题的解决方案

SELECT timeoutdate,
timeoutdays,
timeoutdays
-((DATEDIFF(dd, GETDATE(), timeoutdate) + 1)
-(DATEDIFF(wk, GETDATE(), timeoutdate) * 2)
-(CASE WHEN DATENAME(dw, GETDATE()) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, GETDATE()) = 'Saturday' THEN 1 ELSE 0 END)) daysinqueue
FROM table1

输出:

|             TIMEOUTDATE | TIMEOUTDAYS | DAYSINQUEUE |
-------------------------------------------------------
| 2013-05-14 23:59:13.000 | 10 | 9 |

SQLFiddle

感谢@CMS solution获取两个日期之间的工作日数

关于sql-server - 从日期字段中减去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com