SQL按时间间隔查询

标签 sql sql-server

所以我用了this作为引用发布,但我想根据 15 分钟的时间段计算所有行。

这是我目前所拥有的:

SELECT      DateAdd(minute, DateDiff(minute, 0, [datetime]), 0) as Timestamp, 
            Count(*) as Tasks
FROM        [table]
GROUP BY    DateAdd(minute, DateDiff(minute, 0, [datetime]), 0)
ORDER BY    Timestamp

这非常适合每分钟获取行数,但是我需要 15 分钟... 所以我改变:

DateAdd(分钟, DateDiff(分钟, 0, [日期时间]), 0)

DateAdd(分钟, DateDiff(分钟, 0, [datetime]), 15)

然而,这只是将日期提前了 15 天。

感谢任何帮助!

最佳答案

要得到 15 分钟,除以 15(然后再乘以):

SELECT      DateAdd(minute, 15*(DateDiff(minute, 0, [datetime]) / 15), 0
                   ) as Timestamp, 
            Count(*) as Tasks
FROM        [table]
GROUP BY    (DateDiff(minute, 0, [datetime]) / 15)
ORDER BY    Timestamp;

SQL Server 进行整数除法。如果您想明确表达自己的意图,请使用 FLOOR()

关于SQL按时间间隔查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487200/

相关文章:

mysql - 只需要对查询中的特定行进行分组

sql-server - 从一个表中选择一个逗号分隔值,并使用 SQL Server 中的函数在另一个表中的 where 条件中使用它

java - Postgresql 货币类型和 java

php - MYSQL - 从不同行获取值并将它们返回到同一行

sql - 从 Report Manager SQL Server 2005 打印时 Windows IE 10 崩溃

sql-server - LINQ to SQL 数据上下文日志不显示 WHERE 子句

sql - 如何找到两个机场之间的最短距离/旅行时间?

sql - 提取日/小时/分钟

sql - 如何在 SQL 中根据 LastCreatedDate 选择不同的名称

c# - SQL Server全文搜索词库