Как разделить время и рассчитать разницу во времени в sql server 2005?

#sql-server-2005

#sql-server-2005

Вопрос:

я хочу разделить время и рассчитать разницу во времени с помощью sql server 2005

мой вывод по умолчанию выглядит следующим образом:

 EnrollNo     AttDateFirst                          AttDateLast
111      2011-12-09 08:46:00.000          2011-12-09 08:46:00.000
112      2011-12-09 08:40:00.000          2011-12-09 17:30:00.000
302      2011-12-09 09:00:00.000          2011-12-09 18:30:00.000
303      2011-12-09 10:00:00.000          2011-12-09 18:35:00.000
  

Я хочу, чтобы мой новый вывод был таким:

 Enroll No     .....      FirtTime       LastTime      Time Diff
111           .....      8:46:00          8:45:00     00:00:00
112           .....      8:30:00         17:30:00      9:00:00
302           .....      9:00:00         18:30:00      9:30:00 
303           .....     10:00:00         18:35:00      8:35:00
  

Комментарии:

1. Первая и последняя даты всегда в один и тот же день?

2. да, в тот же день. я получаю записи с перфоратора, чтобы пользователь мог выполнять перфорацию в любое время в тот же день, но мы хотим получить первую и последнюю записи перфорации и найти разницу во времени

Ответ №1:

Вы можете использовать этот запрос:

 select EnrollNo, convert(varchar, AttDateFirst, 8) as FirstTime,
                 convert(varchar, AttDateLast, 8) as LastTime,
                 convert(varchar, AttDateLast - AttDateFirst, 8) as [Time Diff]
from YourTable
  

чтобы вернуть следующие результаты:

 EnrollNo    FirstTime                      LastTime                       Time Diff
----------- ------------------------------ ------------------------------ ------------------------------
111         08:46:00                       08:46:00                       00:00:00
112         08:30:00                       17:30:00                       09:00:00
302         09:00:00                       18:30:00                       09:30:00
303         10:00:00                       18:35:00                       08:35:00
  

Ответ №2:

вы можете использовать

выберите DATEDIFF(день, 2007-11-30, 2007-11-20) В КАЧЕСТВЕ NumberOfDays, DATEDIFF(час, 2007-11-30, 2007-11-20) В КАЧЕСТВЕ NumberOfHours, DATEDIFF(минута, 2007-11-30, 2007-11-20) В КАЧЕСТВЕ NumberOfMinutes из test_table

для разделения вы можете использовать

 substring(AttDateFirst,charindex(' ',AttDateFirst) 1 ,
                       len(AttDateFirst)) as [FirstTime]