如何在SQL中每2分钟获取一次记录

时间:2018-03-22 12:09:18

标签: sql sql-server-2008

我有一个数据表,每隔一分钟就有一个条目,它是一个庞大的数据集。所以我需要每2分钟检索一次数据10 minutes dataset from last valid record。所有这些数据都用在图形图中,因此试图限制图表中显示的记录数。 例如,样本看起来像这样:

DateTime
2016-01-01  08:22:00
2016-01-01  08:21:00
2016-01-01  08:20:00
2016-01-01  08:19:00
2016-01-01  08:18:00
2016-01-01  08:17:00
2016-01-01  08:16:00
2016-01-01  08:15:00
2016-01-01  08:14:00
2016-01-01  08:13:00
2016-01-01  08:12:00
2016-01-01  08:11:00
2016-01-01  08:10:00

预期记录结果:

2016-01-01  08:21:00
2016-01-01  08:19:00
2016-01-01  08:17:00
2016-01-01  08:15:00
2016-01-01  08:13:00

如何在SQL查询中执行此操作?

2 个答案:

答案 0 :(得分:1)

要检索值,您可以使用以下内容:

SELECT
    *
FROM
    YourTable AS T
WHERE
    T.DateTimeColumn >= DATEADD(MINUTE, -10, GETDATE())

对于您的定期任务,您可以创建一个每2分钟运行上一个查询的SQL Server代理作业。

答案 1 :(得分:1)

如果您使用的是SQL Server:

  1. 您可以在SQL Server代理
  2. 中安排作业
  3. 在SQL中编写循环并运行它。你可以改变@end_time计算,将时间限制从10增加到更大。

    DECLARE @interval int = 2, 
                    @start_time datetime , 
                    @end_time datetime   
    
     set @start_time = GETDATE();
     set @end_time = DATEADD(M, 10, @start_time)
    
     while (@start_time < @end_time)
        BEGIN
        select * 
        from [TABLENAME ]
        where [col] between @start_time and DATEADD(M, @interval, @start_time)
    
            set @start_time = DATEADD(M, @interval, @start_time)     END