2016-05-17 3 views
0

моего заявления SQL, как это:я использую DATEDIFF вычесть мое время, но я получил 0 ответ каждый раз, когда я выполняю

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

что дата timeln и outtime? –

+0

Пожалуйста, отредактируйте свой вопрос, чтобы включить данные образца (желательно как DDL + DML) и желаемые результаты. –

+0

Прочтите https://msdn.microsoft.com/en-us/library/ms189794.aspx для получения информации о том, как работает DATEDIFF – Alex

ответ

0

Пожалуйста, обратите внимание, что DATEDIFF неявно ставит под строковые литералы в качестве типа Datetime2. Это означает, что DATEDIFF не поддерживает формат YDM, когда дата передается в виде строки. Вы должны явно передать строку в тип datetime или smalldatetime, чтобы использовать формат YDM.

Ссылка: https://msdn.microsoft.com/en-us/library/ms189794.aspx

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.

+0

спасибо, что я уже понял это, я хочу отобразить ответ в этом формате HH: MI: SS how я могу сделать это ? – Ralph

0

Это, безусловно, поможет вам

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