【发布时间】:2016-01-05 15:16:38
【问题描述】:
我必须找到总数。月、日或月、周或周、日或仅几天,基于用户提供输入的开始日期和结束日期之间的间隔。
如果两个日期之间的间隔不超过 30,那么输出应该只有天数
例如- StartDate - 1 July EndDate-24 July
Time_Type StartDate EndDate
Day 1 July 24 July
间隔大于 30 天但小于 90 天,输出应仅以天和周为单位,我的一周从星期一开始,到星期日结束
例如- StartDate - 1 July 2015 EndDate- 23 September 2015
Time_Type StartDate EndDate
Day 1-07-2015 5-07-2015
Week Week2(july) Week3(September)
Day 21-09-2015 23-09-2015
`Interval is more than 90 Days than` output should be in days and months
例如- StartDate – 22 April 2015 EndDate - 8 December 2015
Time_Type StartDate EndDate
Day 22-04-2015 30-04-2015
Week May2015 November 2015
Day 01-12-2015 08-12-2015
这里的周数可以是每年的周数,例如第 2 周(7 月)将是 26 周。
【问题讨论】:
-
@JulienVavasseur 让这个问题变得复杂的并不是日期差异
-
一旦你知道天数的差异,使用 CASE
-
@JulienVavasseur 听起来您已经有了 DATEDIFF 和 CASE 的答案。我很想看到它发布
-
你如何定义一个月? startdate 2015-01-29 enddate 2015-02-28 会是一个月吗?与周相同的问题,周三第 1 周,周二第 2 周可能是 2 周,因为两个周都包括在内,1 周四舍五入或 0 周,因为没有整周
-
如果您提供示例数据(因为它存在于您的一个或多个表中),然后仅基于该示例提供预期结果,那会简单得多。
标签: sql-server tsql date stored-procedures intervals