【问题标题】:Finding specific days between two dates [duplicate]查找两个日期之间的特定日期[重复]
【发布时间】:2017-02-28 20:10:07
【问题描述】:

我需要帮助来了解两个特定日期之间有多少个星期五。我已经找到并阅读了有关的帖子; Work days between two dates - 但我无法破解如何计算两个日期之间的特定天数。我需要一个比仅仅除以 7 更可靠的解决方案。

谢谢!

【问题讨论】:

  • 你应该用你正在使用的数据库标记你的问题。
  • 你也应该发布失败的代码。
  • 并且还定义了“比仅仅除以 7 更可靠的解决方案”。只要一周有 7 天,这个数字就会以某种方式发挥作用。
  • @CBroe,8 天的时间段可以包含 1 或 2 个星期五。
  • @jarlh 这可能是 CBore 所说的“一种方式”或“另一种方式”。

标签: sql sql-server


【解决方案1】:

declare @startDate date;
declare @endDate date;

select @startDate = '2017-02-01';
select @endDate = '2017-02-10';

with dateBetween as
(
  select dt = dateadd(dd, 1, @startDate)
  where dateadd(dd, 1, @startDate) < @endDate
  union all
  select dateadd(dd, 1, dt)
  from dateBetween
  where dateadd(dd,1, dt) < @endDate
)

select DATENAME(dw,dt) As [Dayname],dt as [Date]
from dateBetween where DATENAME(dw,dt) ='Friday'

【讨论】:

  • 感谢一百万辛格,完美!
  • 我在末尾添加了 [option (maxrecursion 0)] 以去除最大递归错误信息。
  • 尝试选项(maxrecursion 365)
  • 我的 startDate 和 endDate 相差 14 年,所以这行不通。
  • 每年尝试不同的 CTE 并保存在临时或动态表中,然后最后使用(临时或动态表)插入
猜你喜欢
  • 2013-02-05
  • 2017-04-22
  • 2015-03-11
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
相关资源
最近更新 更多