Muhtemelen periyotları aralıklara çevirmek istersiniz - gerekirse, bitiş zamanını bitiş zamanından çıkararak. TIME türünün bir süreyi değil bir süreyi temsil ettiğini unutmayın. Standart SQL'de INTERVAL HOUR TO SECOND. Microsoft'un bunu destekleyip desteklemediğinden emin değilim - olmayan diğer büyük DBM'ler var. Eğer TIME ile sıkışırsanız, TIME '00: 00: 00 'değerlerinden çıkarmanız ve işinize yarayan bir şey almanız gerekir (bu bir INTERVAL olacaktır).
Aralığın belirli bir avantajı, bunları gerçekten SUM aracılığıyla ekleyebileceğinizdir.
Ayrıntılar için, el ile yapabildiğim kadar MSDN'de (veya Google üzerinden) da bash yapabilirsiniz.
double foo = AmountOfTime(datacontext.Where(conditions)).TotalHours;
:
public TimeSpan AmountOfTime(IQueryable<Something> iq)
{
TimeSpan ts = TimeSpan.Zero;
foreach (Something a in iq.ToList())
ts += (a.finishdatetime - a.startdatetime);
return ts
}
Sonra toplam saati almak için kullanabilirsiniz:
Çalışıyor, ancak bununla ilgili sorun, db'nin hesaplanan tüm girdileri toplamı hesaplamanızı istiyor olmanızdır. Tablo boyutuna bağlı olarak, bu yeterince verimli olmayabilir. –