2013-09-11 3 views
0

Я искал многие темы и не могу найти ответ, который мне нужен. У меня есть две колонки: даты-времениразница между датами в часах

BOOKDATIME    BOOKDATIME_OFF 
2013-06-01 12:14:00.000 2013-06-03 07:09:00.000 

То, что я хочу сделать, это просто показать общий час и минуты разницу между двумя датами.

Когда я использую:

CONVERT(TIME, BOOKDATIME_OFF - BOOKDATIME) 
        AS HourMinuteSecond 

Я получаю сообщение об ошибке: Не удается вызвать методы по времени

+0

Вы можете использовать [DATEDIFF] (http://technet.microsoft.com/en-us/library/ms189794.aspx). –

+0

Вычитание двух значений 'datetime' и преобразования в' time' допустимо в SQL Server. Вы можете показать весь запрос, который генерирует ошибку? –

ответ

0
DATEDIFF(HH,BOOKDATIME, BOOKDATIME_OFF) 
+1

* Пожалуйста, введите «ЧАСЫ» явно, вместо сохранения двух целых символов и ввода «HH» - [стенограммы вызывают путаницу] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits -to-kick-using-shorthand-with-date-time-operations.aspx). * –

0

Вы можете использовать DATEDIFF() и деление/модуль деления, чтобы получить разницу в общее количество часов/минут :

SELECT Hours = DATEDIFF(Minute,'2013-06-01 12:14:00.000','2013-06-03 07:09:00.000')/60 
     ,Minutes = DATEDIFF(Minute,'2013-06-01 12:14:00.000','2013-06-03 07:09:00.000')%60 

Если поля DATETIME всегда меньше, чем день, кроме то вы можете также вычесть время, как даты и времени х и литая:

DECLARE @date DATETIME = GETDATE() 
     ,@date2 DATETIME = DATEADD(MINUTE,25,GETDATE()) 
SELECT CAST(@date2 - @date AS TIME) 
+2

Претензии о добавлении разницы в часах, но расчет неверен (у него есть один дополнительный час, потому что датичный коэффициент калибровки часов отличается от '09 : 59: 59 'и '10: 00: 00' как 1). Вы должны принять минутную разницу и делить на 60 вместо – Lamak

+0

* Кроме того, не используйте «псевдонимы столбцов одной кавычки» - этот синтаксис устарел в некоторых формах, а также делает эти псевдонимы похожими на строковые литералы. '[квадратные скобки]' намного предпочтительнее, ИМХО, и только тогда, когда они на самом деле необходимы. * –

+1

Часть «отливка времени» будет разрываться, когда разница больше 23: 59: 59.99999999 часов (так что это не будет работа над примером OP) – Lamak

Смежные вопросы