2014-03-07 43 views
0

如果有人能夠幫助我解釋如何將我的時間戳功能轉換爲工作薪酬服務,我將不勝感激。檢索兩個日期之間的小時差

現在,當用戶登錄到我的站點時,他們可以單擊按鈕中的時鐘,該時鐘將datetime格式的時間戳記爲SQL。

這是格式:2013-05-12 09:19:00

  • 點擊之後,它開始在in列時鐘。
  • 當他們再次點擊時,它會添加到out列。

據存儲在這些列:

  • ID(AUTO_INCREMENT)
  • 用戶ID(唯一)
  • 在(日期時間)
  • 出(日期時間)

一個函數看起來/工作如何獲得一個員工的總時數?

至少,請指出我正確的方向來解決這種情況。

回答

1

您可以充分利用MySQL的函數SUMTIMESTAMPDIFF來算一下:

SELECT SUM(TIMESTAMPDIFF(HOUR, `in`, `out`)) AS hours 
    FROM myTable 
WHERE userid = 1 

Live DEMO

+0

好,所以MySql會知道從日期時間這樣抓住小時?而進出是指我的專欄? – wuno

+0

是'in'和'out'是你的列,它將是一行結果,因爲你指定了'userid',所以你可以像通常那樣抓住它'$ row ['hours']' – Prix

+0

ok,但是按順序獲得兩個日期之間的總小時數。我將不得不將日期與日期時間分開嗎? – wuno

0

我會選擇與用戶ID的所有行,並在PHP會得到函數如下:

$time = 0; 
while($row = $query->fetch_object()) 
{ 
    $time += (strtotime($row->out) - strtotime($row->in)); 
} 

然後$time將是您可以在自己喜歡的方式格式化的總時間。

+0

對人感謝。我會嘗試一下。 – wuno

+0

好的,但你的話說總數是從總數中減去的。對不對?如果是的話這將如何工作與格式爲2013-05-12 09:19:00 – wuno

0

我會用MySQL查詢:

select SEC_TO_TIME(SUM(TIME_TO_SEC(session_duration))) as total_session_duration 
    from (
     select timediff(`in`, `out`) as session_duration 
      from employees_log #your table_name here 
      where userid = [your user id] 
) as t_duration 

未能進行測試它,但我很確定這應該工作。