2015-07-31 3 views
0

У меня есть запись:Как использовать DATEDIFF функцию, чтобы показать день, час, минуту и ​​второй

Depart_dt    Arrived_dt 
10/1/2013 6:15:00 AM 10/1/2013 7:25:00 AM 

Исходя из моего расчета, это 0 день, один час и 10 минут между arrived_dt и Depart_dt. Как показать результат, как показано ниже:

Day Hour Minute Second 
0  1  10  0 
+0

вам нужно их как отдельные столбцы? –

+2

Какие РСУБД ???? – Praveen

+0

Что такое база данных, что вы пробовали до сих пор? – Bulat

ответ

1
select 
datediff(second,depart_dt, arrived_dt)/86400 as Day, 
datediff(second,depart_dt, arrived_dt)/3600%24 as Hour, 
datediff(second,depart_dt, arrived_dt)/60%60 as Minute, 
datediff(second,depart_dt, arrived_dt)%60 as Second 
from yourtable 

Конвертирование дни, часы и минуты в секунды для точности.

SQL Скрипки: http://sqlfiddle.com/#!6/c6c63/1

3

Вы можете использовать модуль разделения на выходе функции DATEDIFF() для этого:

SELECT DATEDIFF(second,Depart_dt,Arrived_Dt)/(60*60*24) AS Day 
     ,DATEDIFF(second,Depart_dt,Arrived_Dt)/(60*60)%24 AS Hour 
     ,DATEDIFF(second,Depart_dt,Arrived_Dt)/(60)%60 AS Minute 
     ,DATEDIFF(second,Depart_dt,Arrived_Dt)%60 AS Second 
FROM Table1 

Демо: SQL Fiddle

+0

будет 'DATEDIFF (час, Depart_dt, Arrived_Dt)% 24' дать общую разницу в час ??. Я думаю, что 'Q' - это формат' day \ hour \ min \ sec' – Praveen

+0

Да, общее количество разницы в часах и деление модуля вернут остаток, поэтому возвращаются только часы, не взвешенные в дневном ковше. Таким образом, за минуты это возвращает 10 вместо 70, поскольку общая разница в минутах составляет 70, но только 10 из этих минут еще не были зафиксированы в часовом ковше. –

+0

Спасибо за разъяснение – Praveen

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