TSQL,两个日期之间的时差

时间:2017-02-23 17:51:50

标签: sql sql-server tsql

我试图在两个日期之间获得分钟差异,让我们说:

  

来自
  2/23/2017 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小时。

更新
也许这不是正确的方法,但是,我通过简单的算术运算改变了-900

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

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

如果有一种方法可以在没有算术运算的情况下进行,我将不胜感激

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您使用的数据类型包含表格中的日期时间信息?在下面的示例中,您可以看到您的方法是如何正确的,并且我在所有这些示例中都收到了结果540.

Dim startInfo As New ProcessStartInfo
startInfo.Verb = "runas"
startInfo.FileName = "subprocess-elevated.exe"
startInfo.Arguments = "arg1 arg2 arg3"
startInfo.WorkingDirectory = Environment.CurrentDirectory
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.CreateNoWindow = True
Dim p As Process = New Process()
p.StartInfo = startInfo
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = True
p.Start()
Console.WriteLine(p.StandardOutput.ReadToEnd)
Console.WriteLine(p.StandardError.ReadToEnd)
p.WaitForExit()