2014-02-15 93 views
0

我有一個數據庫,收集用戶輸入/輸出的時間。我收集像這樣的信息:根據14天的薪酬期計算薪酬期 - PHP/SQL

user_id  clock_in clock_out 
612   1383710400 1383728400 
612   1384315200 1384333200 
508   1383710400 1383738400 

雖然循環,我計算每個物體的時間,像這樣:
$total=(($e->clock_out-$e->clock_in)/60/60);

我在哪裏卡住 我卡上怎麼一點將他們分成薪酬期。我知道一年有26個工資期。我也知道我們今年的首付工資是01.13.14 - 01.26.14

我曾嘗試: 我想嘗試只收集一年date('W',$e->clock_in)的一週,同時通過數據庫結果循環,但我不知道如何將它們分組。

問題:foreach期間循環時可以進行分組/排序嗎?您是否建議將數據分組/整理到薪酬期間的方法不同?

請讓我知道是否需要更多的代碼等。謝謝!

回答

1

假設這些是標準的Unix時間戳,你可以按照你想要的方式簡單地提取/壓縮日期。如果您的工作周對應於標準日曆周,那就更簡單了:

SELECT user_id, clock_in-clock_out 
FROM yourtable 
GROUP BY WEEK(FROM_UNIXTIME(clock_in)) 

這將只通過單一的周組,但是這僅僅是給你一個總體思路。

MySQL有一個非常廣泛的,可用於該日期/時間功能:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week

+0

莫大的聯繫,我發現,整個頁面的幫助。所以你懷疑提取過程中的分組比提出要好? – camelCase

+0

這取決於您的分組規則以及您的工作周如何映射到日曆周。如果sql變得太難看了,你最好用PHP來做。另外還有一些邊際案例,如跨越一年邊界的支付週期。你可以從52周開始,在第1周結束,爲期51周的工作。 –

+0

啊,是的,我明白你的觀點,謝謝你。我現在正在測試它,看看它是多麼可行,因爲我們的工作周確實將日曆周映射到了日曆周(mon-sun,這與「date」('W')'相關)。 – camelCase