2015-05-14 4 views
0

Привет, ниже таблицы со значениями времени и времени. , например, мой во время 2015-05-14 09:21:19 и вне времени 2015-05-14 11:20:51 и снова во время 2015-05-14 11:26:39 и вне времени 2015-05-14 13:46:47 т.д.Как извлечь вовремя, используя один столбец даты?

Теперь я хочу все время в часах и минутах. Как я могу это получить ?.

+--------+----------+---------------- 
|  id| login | intime   | 
+--------+----------+---------------- 
| 345 | xyz | 2015-05-14 09:21:19 | 
| 345 | xyz | 2015-05-14 11:20:51 | 
| 345 | xyz | 2015-05-14 11:26:39 | 
| 345 | xyz | 2015-05-14 13:46:47 | 
| 345 | xyz | 2015-05-14 14:07:09 | 
+--------+----------+---------------- 
+0

Этого набор данных в неполном, обеспечивает полный пример и ожидаемый результат. –

+0

Какой запрос вы пробовали? – Gunaseelan

+0

ошибка бросания ниже запроса выберите t1.login, TIMESTAMPDIFF (день, t1.intime, t2.intime) FROM Без имениТемберомFromQuestion t1 INNER JOIN UnnamedTableFromQuestion t2 FROM employee_timings где emp_id = '345' и row_create like '2015-05-14%'; – Chungyar

ответ

2

Это вернет hh: mm: ss from fields.

select time(Intime) 

Это будет возвращать только часы

select hour(Intime) 

Это возвратит отформатированный время -H: я

SELECT DATE_FORMAT(Intime,"%H:%i") 

Попробуйте:

SELECT @i:=sum(unix_timestamp(intime)) FROM `test` where in_out=0; 
SELECT @o:=sum(unix_timestamp(intime)) FROM `test` where in_out=1; 
select @o:=if(@i>@o,@o+UNIX_TIMESTAMP(),@o); 
select @i, @o, TIME_FORMAT(SEC_TO_TIME((@[email protected])),'%Hh %im'); 

Или использовать PHP, чтобы получить sum в unix для IN time, Sum из unix for Out Time , И получить секунды между результатами

+0

Я хочу вычесть время между каждыми двумя строками, используя intime с одним запросом. Наконец, чтобы узнать, сколько часов человек остался внутри. предположим, что первые две строки diff являются 2hrs, а следующие две строки diff - 3 часа, а следующие две строки diff - 4 часа. Теперь я хочу общее время (2 + 3 + 4 = 9). – Chungyar

+0

Добавьте новые поля в таблицу и отметьте время ввода и выключения для каждой сессии, а время - IN, а какое время - OUT. И вы можете получить время между In и Out, сгруппированным по сеансу. – Ifkooo

+0

У меня нет этого шанса. – Chungyar

0

Попробуйте это: я не могу получить свой вопрос четко, попробуйте как этот макияж попробовать это select SUM(DATEDIFF(minute, '0:00:00', intime)) as minuteas, SUM(DATEDIFF(HOUR, '0:00:00', intime)) as hours from table

+0

Ошибка при метании Неверный подсчет параметров в вызове функции native «DATEDIFF», поскольку mysql не поддерживает датифф. – Chungyar

+0

извините, я использовал MS SQL это, есть хороший ответ: http://stackoverflow.com/questions/19051544/sum-of-date-time-difference-in-a-mysql-query –

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