在SQL Server中减去两个日期时间值

时间:2015-06-14 19:32:18

标签: sql-server

我想减去两个日期时间值:

我有开始日期时间 #2015-06-14 23:00:00# 结束日期时间 #2015-06-15 01:01:00#

我想通过时间格式获取持续时间,如HH:MM:SS,并在我尝试下面的代码中的持续时间列中更新它,但它不起作用。

update [ZainJTA].[dbo].[TBL_Justification]  
set [Justification_Event_Duration]=CONVERT(Datetime,(DateDiff("n",[Justification_From],[Justification_TO])/60/24),108)

1 个答案:

答案 0 :(得分:1)

DATEDIFF会返回INT,因此将其除以另外两个INT将会给您 - 另一个INT,很可能为零。

尝试:

CONVERT(Datetime,(DateDiff(s,[Justification_From],[Justification_TO])/60.0/60/24),108)

(60.0将触发转换为浮点格式。)

然而,存储它可能更有意义,它只需要几秒(整数),并且只有在输出显示时才会CONVERT。< / p>

要显示为 时间,没有日/年部分,您还需要进行第二次转换:

CONVERT(VARCHAR, CONVERT(Datetime,
    (DateDiff(s,[Justification_From],[Justification_TO])/60.0/60/24),108),108)