Sql server 从日期字段中减去日期
原始问题 我需要编写一个Microsoft SQL语句,从另一个表的天数中减去一个日期。因此,本质上,下表示例如下:Sql server 从日期字段中减去日期,sql-server,date,Sql Server,Date,原始问题 我需要编写一个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 任何帮助都将不胜感激 更新的问题 我唯一需要处理的两项是以下信息: 我需要知道发票在发票队列中的时
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
任何帮助都将不胜感激
更新的问题
我唯一需要处理的两项是以下信息:
我需要知道发票在发票队列中的时间。TimeoutDate是发票将使队列超时的时间,TimeOutDays是队列超时前给出的天数,但它是工作日,因此不包括周末
因此,如果您根据此信息计算,发票已在队列中等待了8个工作日
Select DATEADD(month, -(Table2.day) , Table1.date)
FROM Table1 Inner Join Table2
ON Table1.Col=Table2.Col
当然,您可以根据自己的结构修改联接。试试看
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 |
| TIMEOUTDATE | TIMEOUTDAYS | DAYSINQUEUE |
-------------------------------------------------------
| 2013-05-14 23:59:13.000 | 10 | 9 |
更新:完全改变问题的解决方案
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
输出:
| NEW_DATE |
------------------------------
| May, 01 2013 23:59:13+0000 |
| May, 01 2013 23:59:16+0000 |
| May, 01 2013 23:59:06+0000 |
| TIMEOUTDATE | TIMEOUTDAYS | DAYSINQUEUE |
-------------------------------------------------------
| 2013-05-14 23:59:13.000 | 10 | 9 |
感谢@CMS提供两个日期之间的工作日数您可以使用DATEADD功能。不过,你们打算如何加入这两张桌子呢?谢谢你们,我会试试的,并让你们知道进展如何@这有什么帮助吗?你的问题需要更多的帮助吗?对不起,我还没有查出来。不过我很快就会查出来的。会让你知道的,谢谢你的跟进是的,彼得,我需要更多的帮助!“我只是提出了我的问题……而且有点难。”@首先,你最好在你的原始问题中发布你的补充信息。只需使用编辑链接即可。并删除张贴的答案。其次,您的解释非常混乱,与您提供的样本数据不相关。您能否以表格形式发布源样本数据和基于该数据的期望结果?