2016-04-19 18 views
0

Ich benutze diese LINQ-Abfrage, es funktioniert gut. Problem ist nur, es wird Stunden in int dh 10,9 etc zurückkehren, aber ich will volle Stunden zusammen mit 10 Minuten, dh: 28,9: 45 etcWie bekomme ich genaue Stunden und Minuten von DbFunctions.DiffMinutes()

DayHours = (from ab in db.Attendances 
       where ab.Employee == 63 
        && ab.InTime.Value.Year == 2015 
        && ab.InTime.Value.Month == i 
       select new 
       { 
        Day = ab.InTime.Value.Day, 
        Hours = DbFunctions.DiffMinutes(ab.InTime, ab.OutTime)/60 
       }); 
+0

Sie teilen die Minuten explizit durch 60, um die Anzahl der Stunden zu erhalten. Wenn Sie die Gesamtminuten wollen, dann tun Sie das nicht? – Rob

+0

, aber ich möchte die Gesamtstunden zusammen mit den verbleibenden Minuten z. B. 10:57 – akash

Antwort

2

Sie können dies versuchen:

/*...*/ 
     select new 
     { 
      Day = ab.InTime.Value.Day, 
      Hours = DbFunctions.DiffMinutes(ab.InTime, ab.OutTime)/60 
      Minutes = DbFunctions.DiffMinutes(ab.InTime, ab.OutTime) % 60     
     }); 

Wenn Sie es nicht auf diesem Format wollen, geben Sie bitte genau, wie wollen Sie es speichern

(a Timespan Variable etwas anderes?)
-1

Sie können Genaue Zeit von DB erhalten als

select round(
    Cast(
     DateDiff(
      MINUTE, 
      convert(varchar(5), '09:40:00.0000000', 108), 
      convert(varchar(5), '18:12:00.0000000', 108) 
     )/60 as float 
    ) 
    + Cast(
     DateDiff(
      MINUTE, 
      convert(varchar(5), '09:40:00.0000000', 108), 
      convert(varchar(5), '18:12:00.0000000', 108) 
     ) % 60 as float 
    )/60, 2 
) as [Hour in office] 
Verwandte Themen