2016-09-29 3 views
-1

ich folgende Tabelle haben:berechnen Zeitdifferenz in Minuten zwischen jedem Datensatz in der Gruppe

Event Startdatetime   Enddatetime   Value 
1  '23/09/2016 12:15:20' '23/09/2016 12:34:30' 50 
1  '23/09/2016 14:10:40' '23/09/2016 14:30:25' 40 
2  '25/10/2016 10:20:45' '25/10/2016 10:45:55' 80 
2  '25/10/2016 11:27:35' '25/10/2016 11:48:55' 30 

Jeder Datensatz hat und startdatetime endDateTime und ich möchte Zeitdifferenz in Minuten zwischen jedem Datensatz in der Gruppe berechnen (nach Ereignis).

+3

Sind das tatsächlich 'DATETIME' Werte? Sie sehen aus wie 'VARCHAR'. – Siyual

+0

Gibt es einen Grund, warum Sie dies nicht mit 'DATEDIFF()' tun können? Und wie nennt man eine "Gruppe" in dieser Frage? Was wären die gewünschten Ergebnisse für Ihre Beispieldaten? –

+0

'DATEDIFF (MINUTE, Startdatum, Enddatum)' würde tun. Oder 'DATEDIFF (SECOND, Startdatum, Enddatum)/60' – Lamak

Antwort

1

Da dies kein vom SQL Server erkanntes Datumsformat ist, müssen Sie es zuerst konvertieren und dann rechnen. Sie können LAG verwenden, um den vorherigen Datensatz mit SQL 2012 abzurufen.

select datediff(mi,convert(datetime,Startdatetime,103),convert(datetime,lag(Enddatetime) over (order by Startdatetime),103)) 

oder wenn es nicht braucht Umwandlung ...

select datediff(mi,Startdatetime,lag(Enddatetime) over (order by Startdatetime)) 

wenn Sie schauen, um die Zeitberechnung auf das Ereignis zu tun, dann können Sie das auch abzuteilen ...

select datediff(mi,Startdatetime,lag(Enddatetime) over (partition by Event order by Startdatetime)) 
+0

In Wirklichkeit seine Datumsformatspalte, also habe ich kein Problem mit Datumsformat. – Tony

+0

@Tony Wenn es in Datetime ist, würde es nicht wie das aussehen, was Sie gepostet haben, also mussten Sie das ändern, aber Sie können die Konvertierung entfernen, wenn Sie möchten und Lag verwenden. – scsimon

+0

Wieder ist dies nur ein Beispiel im realen Fall sein Datumsformat, für jetzt brauche ich genau das, was ich zuvor erwähnt habe: brauche datediff zwischen startdate des folgenden Datensatzes und enddatetime vorherigen Datensatz. – Tony

Verwandte Themen