SQL Server:如何找到给定日期和下一个相对日期之间的差异?

时间:2016-10-26 02:00:16

标签: sql-server

如何获取开始日期 td { cursor: pointer; }(7月1日,周五)和下周二之间的日期差异(以天为单位)?

谢谢!

3 个答案:

答案 0 :(得分:1)

嗯。怎么样?

select (case when datename(dow, date) = 'Monday' then 1
             when datename(dow, date) = 'Tuesday' then 7
             when datename(dow, date) = 'Wednesday' then 6
             when datename(dow, date) = 'Thursday' then 5
             when datename(dow, date) = 'Friday' then 4
             when datename(dow, date) = 'Saturday' then 3
             when datename(dow, date) = 'Sunday' then 2
        end)

答案 1 :(得分:0)

你可以试试这个:

SELECT DATEDIFF(day,'2014-06-05','2014-08-05') AS DiffDate

参考:http://www.w3schools.com/sql/func_datediff.asp

答案 2 :(得分:0)

递归cte怎么样?

;with cte as
(SELECT 0 as d
, DATENAME(dw, DATEADD(day, 0, CONVERT(date, '20160701'))) dname
union all
select d + 1
, DATENAME(dw, DATEADD(day, d + 1, CONVERT(date, '20160701'))) dname
from cte
where d < 6
)
select d as NumberOfDaysUntil
, dname
from cte
where dname = 'Tuesday'

从当天开始,它获得一周的工作日并找到第一个名称匹配。如果您想跳过开始的日期,请将0更改为1,将< 6更改为< 7