SQL Server 一天中每小时返回 4 行

add*_*lou 4 sql sql-server

我有一个查询,它返回一天内来自设备的所有消息(简化):

    SELECT date, value 
    FROM Messages 
    WHERE date between '04/01/2018 00:00:00' AND '04/01/2018 23:59:59' 
    ORDER BY date asc
Run Code Online (Sandbox Code Playgroud)

问题是它返回太多行。例如,每分钟至少1 行(一天 1440 行),我必须将其打印在图表中。

我怎样才能在每刻钟返回第一行,这样我每天每小时都会得到 4 行?

预期结果:

        date                value  
2018-01-04 05:00:00.000  ||  5,52
2018-01-04 05:15:00.000  ||  5,48
2018-01-04 05:30:00.000  ||  5,35
2018-01-04 05:45:00.000  ||  5,42
Run Code Online (Sandbox Code Playgroud)

A.D*_*.D. 5

您可以通过模数 (%) 来完成,如下所示:

SELECT date, value 
    FROM Messages 
    WHERE date between '04/01/2018 00:00:00' AND '04/01/2018 23:59:59'  and (datepart(minute,date) % 15) = 0
    ORDER BY date asc;
Run Code Online (Sandbox Code Playgroud)

此查询返回一个数据,其中包含分钟完全除以 15(季度)的日期行。我想这可以解决你的问题。

注意:我没有使用,Seconds因为您的数据按照您所使用的语言每分钟添加一次。