欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sql 时间查询的有关问题, # 100% 结贴

更新时间: 2014-01-05 02:18:12 责任编辑: Author_N1

 

SQL 时间查询的问题, ##################### 100% 结贴
根据两个时间点,然后查询出中间每个月的最后一天。。 怎么破? 有什么好的办法?

例如 :  startime :2012-11-05  ,endtime: 2013-2-15
需要的结果是
2012-11-30
2012-12-31
2013-01-31 
2013-02-28(也不知道这是不是最后一天,不过大神们明白我的意思就好)  
--参考方法--
上面的有点问题,修改一下:
declare @startime datetime
declare @endtime datetime

select @startime = '2012-11-05',
       @endtime  = '2013-2-15'

select convert(varchar(10),dateadd(day,-1,dateadd(month,1,convert(varchar(7),DATEADD(day,number,@startime),120)+'-01')),120) as date
from master..spt_values t
where type ='p' and t.number >=0 and 
      t.number <= DATEDIFF(DAY,@startime,@endtime)
group by convert(varchar(7),DATEADD(day,number,@startime),120)
/*
date
2012-11-30
2012-12-31
2013-01-31
2013-02-28
*/

--参考方法--
我来个别的方式:

/*
--创建函数
create function generateTime
(
    @begin_date datetime,
    @end_date datetime
)
returns @t table(date datetime)
as
begin
    with maco as
    (
       select @begin_date AS date
       union all
       select date+1 from maco
       where date+1 <=@end_date
    )
    insert into @t
    select * from maco option(maxrecursion 0);
    return
end
*/


DECLARE @startime DATE 
SET @startime='2012-11-05'
DECLARE @endtime DATE
SET @endtime='2013-2-15'

SELECT DISTINCT CONVERT(DATE,DATEADD(DD,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,0,[date]),0)))[月末]
FROM dbo.generateTime(@startime,@endtime)


/*
月末
----------
2012-11-30
2012-12-31
2013-01-31
2013-02-28
*/

--参考方法--
不同的方法,同样的目的,厉害……
--参考方法--
目测可以用好多方法来解决这问题 我是来学习的。
--参考方法--

declare @startime DATETIME,@endtime DATETIME,@i int
select @startime = '2012-11-05',@endtime  = '2013-2-15',@i=DATEDIFF(m,@startime,@endtime)+1
;WITH a1 AS
(
SELECT CAST(CONVERT(CHAR(7),DATEADD(m,1,@startime),120)+ '-01' AS DATETIME) startime,1 n
UNION ALL
SELECT DATEADD(m,1,startime),n+1 FROM a1
WHERE n+1<=@i
)
SELECT CONVERT(CHAR(10),DATEADD(d,-1,startime),120) month_end 
FROM a1
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:12
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8246/
本文WWW.DOC100.NET DOC100.NET版权所有。