首页新闻找找看学习计划

sql 求时间差

0
[已解决问题] 解决于 2014-09-11 08:59
输入两个时间(格式:2011-11,2012-06) 
然后输出这种格式:
2011-11
2011-12
2012-01
2012-02
2012-03
2012-04
2012-05
2012-06
就是把他之间的所有时间段输出
SmallMonkey的主页 SmallMonkey | 初学一级 | 园豆:8
提问于:2012-08-29 17:00
< >
分享
最佳答案
1

datediff(day,time1,time2)

奖励园豆:5
jason2013 | 小虾三级 |园豆:1998 | 2012-08-29 17:33
其他回答(2)
0

外层用一个循环

循环里面用

dateadd(day,smalldate,1)

 

时间间隔  可以用 datediff(day,samelldate,bigdate)

 

关于这两个函数,如果不会,可以百度

自由VIVE | 园豆:4 (初学一级) | 2012-08-29 17:34
0

数据量不大可以使用日期函数和系统表,返回一个结果集出来,

下面的SQL语句,楼主可以自己封装成函数或者存储过程

DECLARE @vDateB VARCHAR(7)
  --参数开始月份
DECLARE @vDateE VARCHAR(7)
  --参数结束月份
DECLARE @DateB DATETIME
DECLARE @DateE DATETIME
--为参数赋值
SET @vDateB = '2011-11'
SET @vDateE = '2012-06'
SET @DateB = CONVERT(DATETIME, @vDateB + '-01', 120)
SET @DateE = CONVERT(DATETIME, @vDateE + '-01', 120)
--返回日期范围所有月份的语句
SELECT  CONVERT(VARCHAR(7), DATEADD(mm, a.number + 1, @DateB - DATEPART(mm, @DateE)),120) monthdate FROM master..spt_values a WHERE type = 'p' AND number <=DATEDIFF(mm,@DateB,@DateE)
acepro | 园豆:1218 (小虾三级) | 2012-08-29 20:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册