2017-02-23 8 views
0

Ich versuche, den Unterschied in Minuten zwischen zwei Daten zu bekommen, kann sagen:TSQL, Zeitdifferenz zwischen zwei Terminen

von
2/23/2017 17:00:00 Uhr.
bis
24.02.2017 02:00:00 Uhr.

Welches wäre der beste Ansatz? Ich bekomme

SELECT datediff (minute, START, END) from TIME; 

Aber als Ergebnis:

-900 Minuten

dachte ich, so etwas wie zu tun.

Meine TIME-Tabelle hat nur diese Spalten (ID_TIME, START, END), und das Datum (MM/TT/JJJJ) ist nicht enthalten, sondern nur die START- und END-Stunden.

UPDATE:
Vielleicht nicht der richtige Weg, es zu tun, aber ich die -900 mit einer einfachen Rechenoperation geändert:

(((-900) * - 1) - 360) = 540.

Dies war mein Code:
$time2=sqlsrv_fetch_array($stmt, SQLSRV_FETCH_BOTH); echo "time 2: ".((($time2[0])*-1)-360)."<br>";

Wenn ein es wie es ohne eine arithmetische Operation zu tun, wäre ich dankbar

+0

https://msdn.microsoft.com/en-us/library/ms189794.aspx – SoftwareCarpenter

Antwort

0

ich folgendes versucht und bekam 540.

declare @Start datetime 
declare @End datetime 
set @Start = '2017-2-23 17:00:00' 
set @End = '2017-2-24 2:00:00' 

select datediff(minute, @Start, @End) 

Vielleicht wäre es sinnvoll sein, auch aus den Start- und Enddaten drucken?

SELECT datediff (minute, START, END), START, END from TIME; 
+0

Das funktioniert gut, obwohl ich ein anderes Problem haben, die Daten Sind in der Tabelle nicht definiert, sondern nur die START- und END-Zeiten, werde ich meinen Beitrag bearbeiten. –

0

Welche Datentypen verwenden Sie, die die Datetime-Informationen in Ihrer Tabelle enthalten? In den folgenden Beispielen können Sie sehen, wie Ihr Ansatz korrekt ist und ich habe das Ergebnis 540 in all diesen Beispielen erhalten.

CREATE TABLE #TMP_TIME (START_DATE VARCHAR(35), END_DATE VARCHAR(35)) 

INSERT INTO #TMP_TIME 
SELECT '2/23/2017 17:00:00 pm','2/24/2017 02:00:00 am' 

Select DATEDIFF(minute,START_DATE,END_DATE) FROM #TMP_TIME 
Select DATEDIFF(mi,START_DATE,END_DATE) FROM #TMP_TIME 


CREATE TABLE #TMP_TIME2 (START_DATE DATETIME, END_DATE DATETIME) 

INSERT INTO #TMP_TIME2 
SELECT '2/23/2017 17:00:00','2/24/2017 02:00:00' 

Select DATEDIFF(minute,START_DATE,END_DATE) FROM #TMP_TIME2 
Select DATEDIFF(mi,START_DATE,END_DATE) FROM #TMP_TIME2 
+0

START und END haben den Typ TIME (7). Ich habe einige Informationen aktualisiert, ich kann das ** MM/TT/JJJJ ** nicht in die Tabelle eingeben, nur die Zeit. –

0

Try This:

declare @startdate datetime, @enddate datetime 
set @startdate='2/23/2017 17:00:00 pm' 
set @enddate= '2/24/2017 02:00:00 am' 

select datediff(ss,@startdate,@enddate)/60 
Verwandte Themen