标签归档:日期间隔

mssql sqlserver 使用sql脚本获取指定年份的天数总计


摘要:
下文讲述使用sql脚本的方式,获取指定年份的指定天数,如下所示:
实验环境:sql server 2008 R2


今天同事突然问我,今年有多少天,我一下子蒙了,不知如何回答,下文讲述使用sql脚本获取指定年份的天数


实现思路:
采用指定年份的第一天和”指定年份的下一年”所对应的第一天之间相减,得到的天数,就是指定年份的天数,如下所示:

 
    /*
 例:获取2016年全年天数
*/
declare @maomao varchar(20) 
set @maomao ='2016'
select datediff(day,@maomao+'-1-1', ---指定年份第一天
                     dateadd(year,1,@maomao+'-1-1') ---指定年份向前加一年的
                  )
                  ---使用datediff相减得到两个日期之间的天数之差
                  

mssql sqlserver 查找连续日期及连续日期间隔天数的方法分享


摘要:
下文将分享通过sql脚本获取数据表按照一定规则排序后之间连续日期间隔的天数,如下所示:
实验环境:sqlserver 2008 R2


例:

   
create table test(keyId int identity,writeDate datetime)
go
insert into test(writeDate) values('2018.3.1')
,('2018.3.3'),('2018.3.5'),('2018.3.8')
,('2018.3.17'),('2018.3.18'),('2018.3.19')
,('2018.3.20'),('2018.3.21'),('2018.3.22')
,('2018.3.23'),('2018.3.25'),('2018.3.29')
go
  
 


---方法1:使用row_number生成相关信息
;
with tmp as 
(
select row_number() over(order by writeDate) as keyId,writeDate as d from test 
)
select b.d as [开始日期],a.d as [结束日期], 
datediff(d,b.d,a.d) as [间隔天数]
 from tmp a 
left join tmp as b on a.keyId-1 = b.keyId
where b.d is not null 
;

go


truncate table test 
drop     table test
mssql_sqlserver_日期间隔天数方法分享

mssql_sqlserver_日期间隔天数方法分享