2017-02-23 34 views
0

我試圖讓兩個日期之間的分鐘的差別,可以說:TSQL,兩個日期之間的時間差


2017年2月23日17:00:00 PM。
直到
2/24/2017 02:00:00 am。

這將是最好的方法?

我想通做這樣的事情:

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

但作爲一個結果,我得到:

-900分鐘。

我的TIME表只包含那些列(ID_TIME,START,END),並且不包括日期(MM/DD/YYYY),但僅包括START和END小時。

UPDATE:
也許是不這樣做的正確的方式,但是,我有一個簡單的算術運算改變了-900

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

這是我的代碼:
$time2=sqlsrv_fetch_array($stmt, SQLSRV_FETCH_BOTH); echo "time 2: ".((($time2[0])*-1)-360)."<br>";

如果有一個辦法做到這一點不運算我將不勝感激

+0

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

回答

0

我嘗試以下,並獲得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) 

也許這將是有益的同時打印出來的開始和結束日期?

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

那偉大工程,但我有一個問題,日期沒有在表格中定義,但只有開始和結束時間,我會編輯我的帖子。 –

0

你使用什麼數據類型在表中包含datetime信息?在下面的例子中,你可以看到你的方法是正確的,我在所有這些例子中都得到了結果540。

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和END有TIME(7)類型。 我更新了一些信息,我不能在表格中輸入** MM/DD/YYYY **,只能輸入時間。 –

0

試試這個:

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