我正在处理一个日期范围由两个字段(开始和结束)绑定的表:
ID | START | END
1 2010-01-01 2010-07-01
2 2011-01-01 2011-07-01
3 2012-01-01 2013-07-01
4 2013-01-01 2013-07-01
5 2009-01-01 2013-07-01通过这样的查询,我可以得到由所有范围表示的“月”数的粗略估计:
SELECT SUM(DATEDIFF(dy, Start, End) / 30) as Total_Months
FROM TABLE我想要做的是询问在给定的时间内,有多少个月(或几天)是由所有范围表示的。
因此,如果我在上面的示例中询问从时间段[2013-01-01 - 2013-07-01]中表示多少个月,它会说是18 (6来自第3、4和5行中的每一行)。
实现这一目标的最佳方法是什么?
发布于 2013-08-01 22:10:08
像这样吗?
SELECT SUM(DATEDIFF(dy, Start, End) / 30) as Total_Months
WHERE Start >= '2013-01-01' AND End <= '2013-07-01'
FROM TABLE或使其参数化:
SELECT SUM(DATEDIFF(dy, Start, End) / 30) as Total_Months
WHERE Start >= @startDate AND End <= @endDate
FROM TABLEhttps://stackoverflow.com/questions/18005369
复制相似问题