我想将日期范围划分为各个月份。
例如-我有一个以以下方式包含数据的视图:
user project startdate enddate
-----------------------------------
A abc1 2011-01-01 2011-12-31
A abc2 2011-01-01 2011-05-01
B xyz1 2011-01-01 2011-03-01
我希望能够以这种方式显示以上数据:
user project startdate enddate
A abc1 2011-01-01 2011-01-31
A abc1 2011-02-01 2011-02-28
A abc1 2011-03-01 2011-03-31
----------------------------------
A abc2 2011-01-01 2011-01-31
A abc2 2011-02-01 2011-02-28
----------------------------------
B xyz1 2011-01-01 2011-01-31
B xyz1 2011-02-01 2011-02-28
B xyz1 2011-03-01 2011-03-31
有人可以帮我吗?
下面的查询应该可以解决问题。该CTE
(该WITH
条款)动态生成一些月份的数据,我们可以使用它来加入反对。
declare @test table (
userid char(1),
project char(4),
startdate datetime,
enddate datetime)
insert into @test
select 'A', 'abc1', '1/1/2011', '12/31/2011'
union select 'A', 'abc2', '1/1/2011', '5/1/2011'
union select 'B', 'xyz1', '1/1/2011', '3/1/2011'
--select * from @test
;with MonthList as (
select
DATEADD(month, M, '12/1/1899') as 'FirstDay',
dateadd(day, -1, dateadd(month, M + 1, '12/1/1899')) as 'LastDay',
DATEADD(month, M + 1, '12/1/1899') as 'FirstDayNextMonth'
from (
select top 3000 ROW_NUMBER() over (order by s.name) as 'M'
from master..spt_values s) s
)
select
t.userid, t.project, ml.FirstDay, ml.LastDay
from
@test t
inner join MonthList ml
on t.startdate < ml.FirstDayNextMonth
and t.enddate >= ml.FirstDay
问题内容: 给定2个日期(StartDate和EndDate),我该如何在Pl / SQL中生成季度周期。 例子: 预期产量: 问题答案: 参数规则,您可能需要调整查询以适合您的目的: 如果start_date不是确切的季度开始日期,则它有效地使用季度包含开始日期。 如果end_date不是确切的季度末,那么我们将在end_date之前的那个季度结束(而不是包含结束日期的那个季度)。
问题内容: 源表如下: 我想得到以下输出: 我必须使用循环来填充此表吗? 谢谢 问题答案: 您可以使用技巧来查询 演示
感谢所有人!
我有大量的日期范围,如下所示,示例如下。我需要计算每个实际日历年有多少个月。因此,这将分解为: 合同:123 开始日期:2016年11月1日 结束日期:2018年6月1日 2016年11月1日 合同:456 开始日期:2017年5月31日 结束日期:2019年6月1日 2017年5月31日 有人知道解决这个问题的方法吗?每个合同都有一行,都在同一个表中,开始和结束日期列在同一行中。 我原本打算沿着
问题内容: 我需要填充一个表,该表将存储2个给定日期之间的日期范围:09/01/11-10/10/11 因此,在这种情况下,该表将从2011年9月1日开始存储,直到每天存储到10/10/11,我想知道在SQL Server中是否有一种巧妙的方法-我目前正在使用SQL Server 2008 。 谢谢 问题答案: 在SQL 2005+上很容易;如果您有数字表或理货表,操作会更容易。我在下面伪造了它:
问题内容: 我有一个看起来像这样的数据库表: 写入此日志时,它包含日志记录和unix时间戳。我需要的是获取每周报告,以了解每周有多少日志记录。这是我写的查询: 这给出了这样的结果: 伟大的!但是我想看到的是一个日期范围,如,所以我的结果集如下所示: 有什么办法吗? 问题答案: 使用以获得合适的日期一样,然后用得到你需要的格式。