В моем проекте мне нужно рассчитать временной интервал. В настоящее время я извлекаю каждый 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.
EDIT
Глядя на ответы, я могу сказать, что мой вопрос был не совсем достаточно тщательно. Мой текущий запрос на получение TimeStamps достаточен. Я ищу запрос, чтобы добавить разницу между ними, если интервал составляет 10 секунд или меньше.
Можете ли вы дать нам более подробную информацию о данных, с которыми вы хотите работать в базе данных? Структура таблицы, данные образца, желаемый результат из этих данных образца будет хорошим началом ... –
hmmm Вы можете использовать библиотеку linq? – Nomad101
@ Nomad101 Да, могу. – MyCodeSucks