我使用DATEDIFF来减去我的时间,但每次执行时我得到的答案都是0

时间:2016-05-17 03:44:44

标签: sql-server sql-server-2008 datediff

我的sql语句是这样的:

SELECT DATEDIFF(hh, TimeIn,OutTime ) AS Hours_Rendered
FROM DTR_TimeRecord

3 个答案:

答案 0 :(得分:0)

请注意,DATEDIFF会将字符串文字隐式转换为datetime2类型。这意味着当日期作为字符串传递时,DATEDIFF不支持格式YDM。您必须将字符串显式转换为datetime或smalldatetime类型才能使用YDM格式。

参考:https://msdn.microsoft.com/en-us/library/ms189794.aspx

答案 1 :(得分:0)

您的TimeIn和OutTime必须是同一小时。像

TimeIn : '2016-05-17 11:31:33.190'
OutTime: '2016-05-17 11:35:41.790'

select DATEDIFF(HH, '2016-05-17 11:31:33.190', '2016-05-17 11:35:41.790' )

上面的查询总是会给你0。

但是假设你的OutTime是' 2016-05-17 12:35:41.790'

然后

select DATEDIFF(HH, '2016-05-17 11:31:33.190', '2016-05-17 12:35:41.790' )

以上查询将为您提供1。

答案 2 :(得分:0)

这肯定会对您有所帮助

 SELECT convert(TIME,dateadd(ms,DateDiff(ss, TimeIn, OutTime )*1000,0),114) AS Hours_Rendered
 FROM DTR_TimeRecord