在我的项目中,我需要计算时间跨度。目前,我正在检索与我的查询匹配的每个TimeStamp,并将它们存储在List<>
中。然后,我遍历列表以查看是否有任何间隔为10秒或更少,然后将它们加在一起。大于10秒的任何内容都将被忽略。我想知道是否有一个我可以做的SQL查询会为我做这个?我做了一些搜索,但没有找到任何东西。从本质上讲,如果我不需要,我不想在存储器中存储太多的信息。下面是我使用迭代方法,通过我List<>
:基于时间戳计算时间跨度的SQL查询
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秒或更短,它们之间的差异将加在一起。
您能否介绍一下您想在数据库中使用的数据的更多细节?表结构,样本数据,来自该样本数据的预期结果将是一个好的开始...... – 2013-05-01 21:53:58
嗯,你能够使用linq库吗? – Nomad101 2013-05-01 21:54:05
@ Nomad101是的,我可以。 – MyCodeSucks 2013-05-01 21:59:00