#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]