日期:2014-05-17  浏览次数:20806 次

怎么样用sql语句取到一定时间内的数据,并按时间间隔排列
假如我有 表1
里面数据为1970-1-1 0:0:0至2013-7-11 0:0:0的数据
现在我需要用一条语句
按照5分钟为间隔
将库里的数据显示出来。能不能有加强版,在一段时间,起始时间是可以变动的,时间间隔也是可以变动的查出数据,求指导。
SQL

------解决方案--------------------
传两个参数进去,一个时间间隔,另外一个起始时间,用DATEDIFF函数
用法:DATEDIFF ( datepart , startdate , enddate )
具体的用法在设计器里面输入DATEDIFF,选中按F1帮助查看
------解决方案--------------------
方法是拼接SQL语句,然后使用exec(@sql),还是不会的话,上网搜搜,多学学
------解决方案--------------------
创建一个记录表

SELECT CONVERT(DATETIME,'1970-1-1 0:0:0',121)AS MINDATETIME,CONVERT(DATETIME,'2013-7-11 0:0:0',121)AS MAXDATETIME,
   CONVERT(DATETIME,'1970-1-1 0:0:0',121)AS STARTDATETIME,CONVERT(INT,30)AS IntervalValue --单位是分
  INTO T_TEST2

然后每次查询的时候取记录表里面的信息进行查询

DECLARE @STARTDATETIME DATETIME,
@ENDDATETIME DATETIME,
@MINDATETIME DATETIME,
@MAXDATETIME DATETIME

SELECT @MINDATETIME = MINDATETIME,@MAXDATETIME = MAXDATETIME,
   @STARTDATETIME = STARTDATETIME,@ENDDATETIME = DATEADD(n,IntervalValue,STARTDATETIME)
  FROM T_TEST2

IF @STARTDATETIME >= @MAXDATETIME
BEGIN
RETURN -2
END

IF @ENDDATETIME > @MAXDATETIME
BEGIN
SET @ENDDATETIME = @MAXDATETIME
END

IF @STARTDATETIME <> @MINDATETIME
BEGIN
SET @STARTDATETIME = DATEADD(S,1,@STARTDATETIME)
END

SELECT * FROM T_TEST1
 WHERE CREATEDATETIME BETWEEN @STARTDATETIME AND @ENDDATETIME

查询完成之后更新一下记录表里面STARTDATETIME的值

UPDATE T_TEST2 SET STARTDATETIME = @ENDDATETIME