在我的项目中,我需要计算时间跨度.目前,我正在检索与我的查询匹配的每个TimeStamp并将它们存储在List中.然后,我遍历列表以查看是否有任何间隔是10秒或更短,然后我将它们加在一起.大于10秒的任何内容都将被忽略.我想...

在我的项目中,我需要计算时间跨度.目前,我正在检索与我的查询匹配的每个TimeStamp并将它们存储在List<>中.然后,我遍历列表以查看是否有任何间隔是10秒或更短,然后我将它们加在一起.大于10秒的任何内容都将被忽略.我想知道是否有一个我可以做的SQL查询会为我做这个吗?我做了一些搜索,但没有找到任何东西.基本上,如果我不需要,我不想在内存中存储这么多信息.这是我用来迭代我的List<>的方法:
private static TimeSpan TimeCalculations(IList<DateTime> timeStamps)
{
var interval = new TimeSpan(0, 0, 10);
var totalTime = new TimeSpan();
for (var j = 0; j < timeStamps.Count - 1; j++)
{
if (timeStamps[j + 1].Subtract(timeStamps[j]) > interval) continue;
var timeDifference = timeStamps[j + 1].Subtract(timeStamps[j]);
totalTime = totalTime.Add(timeDifference);
}
return totalTime;
}
当前正在检索的数据可以是10到400k行的数据.这是一个示例:
2006-09-07 11:46:09
2006-09-07 11:46:19 - 10 seconds
2006-09-07 11:46:20 - 1 second
2006-09-07 11:46:36
2006-09-07 11:47:49
2006-09-07 11:47:53 - 4 seconds
2006-09-07 11:48:02 - 9 seconds
2006-09-07 11:48:15
2006-09-07 11:48:29
2006-09-07 11:48:34 - 5 seconds
2006-09-07 11:54:29
2006-09-07 11:54:39 - 10 seconds
2006-09-07 11:54:49 - 10 seconds
2006-09-07 11:54:59 - 10 seconds
这将导致大约59秒.这是我正在寻找的那种结果.
我正在使用的数据库是SQLite.
编辑
看看答案,我可以说我的问题不够彻底.我当前获取TimeStamps的查询就足够了.我正在寻找的是一个查询,如果间隔为10秒或更短,则将它们之间的差异加在一起.
解决方法:
使用您的示例数据创建一个sqlfiddle,此查询将对您的示例数据起作用:
SELECT DISTINCT tbl.timestamp FROM main_tbl tbl
INNER JOIN
(
SELECT temp.ID, temp.timestamp FROM main_tbl temp
)test
ON tbl.timestamp <= datetime(test.timestamp, '+10 seconds')
AND tbl.timestamp >= datetime(test.timestamp, '-10 seconds')
AND tbl.ID <> test.ID
ORDER BY tbl.timestamp
http://sqlfiddle.com/#!7/049f5/3
编辑2:
SELECT
sum(
strftime('%s',
(
SELECT min(temp.timestamp)
FROM main_tbl temp
WHERE temp.timestamp > tbl.timestamp
)
) - strftime('%s',tbl.timestamp)
) as total_sum
FROM main_tbl tbl
WHERE (
strftime('%s',
(
SELECT min(temp.timestamp)
FROM main_tbl temp
WHERE temp.timestamp > tbl.timestamp
)
) - strftime('%s',tbl.timestamp)
) <= 10
AND date = "2013-05-13"
AND col1 = col2
http://sqlfiddle.com/#!7/049f5/55
本文标题为:c# – 用于根据时间戳计算时间跨度的SQL查询


基础教程推荐
- C#使用Json.Net对JSON与对象的序列化与反序列化 2023-06-08
- C#实现运行状态堆叠柱状图 2023-05-16
- C#语法之泛型的多种应用 2023-01-27
- Avalonia封装实现指定组件允许拖动的工具类 2023-07-18
- Unity3D移动端实现摇一摇功能 2023-02-02
- C# Winfrom实现Skyline画直线功能的示例代码 2023-02-06
- 关于C#继承的简单应用代码分析 2023-04-15
- C#获取Description特性的扩展类详解 2023-06-21
- C# 泛型字典 Dictionary的使用详解 2023-06-08
- 温故知新,.Net Core遇见JWT(JSON Web Token)授权机制方案 2023-09-28