例如, 开始日期=“20100530”和 结束日期=“20100602”如何计算两组日期之间的数值?
如何可以写一个SQL以显示下面的结果?
month: may, 2 days
month: June, 2 days
例如, 开始日期=“20100530”和 结束日期=“20100602”如何计算两组日期之间的数值?
如何可以写一个SQL以显示下面的结果?
month: may, 2 days
month: June, 2 days
使用递归CTE生成所有的开始和结束的日期,然后做一个简单的组数(注意,不是测试,但应接近,如果不完全正确):
with dates (the_date) as (
select @start_date
UNION ALL
select dateadd(dd, 1, the_date) from dates where the_date <= @end_date
)
select
datepart(mm, the_date) month,
count(*) num_days
from
dates
group by
datepart(mm, the_date)
我不认为它真的很重要,但你的the_date和1参数应该颠倒 – 2010-06-07 02:22:01
唉,失败!忏悔! ;)(另外,固定的,谢谢你在服务器嘲讽你时遇到的那些事情之一) – Donnie 2010-06-07 02:35:21
TBH,您真的需要提供更多关于源数据的架构和信息。然而,由于琐碎的资料我们知道,你应该能够写:
Select DateName('month', [Date]) As Month
, Cast(DateDiff(d, @StartDate, @EndDate) As varchar(10) - 1) + ' days'
From Table
Where [Date] Between @StartDate And @EndDate
我们就需要知道改进我们的解决方案是2 days
究竟是如何应该被计算。这是开始和结束日期之间的日子吗?它是第二个参数的那一天吗?
哪个版本的sql server? – 2010-06-07 02:25:38