2017-02-23 85 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