2011-11-01 240 views
0

我正在與FireBird開展一個關於工作時間的PHP項目。基本上,每個工人都有一張卡片,他在進入和離開建築時蓋章。每張郵票都記錄到ARCHIVE表中,日期(DATUM),id(NREC)和user_id(NCODE)。我需要做的是獲得每一天的最後一次和第一次,並計算小時數。因此,要獲得第一個和最後一個,我用這個:FireBird - 計算兩個時間戳之間的小時差?

SELECT MAX(NREC) 
FROM ARCHIVE 
WHERE DATUM BETWEEN '$day.$month.$year' AND '$day+1.$month.$year'; 

SELECT MIN(NREC) 
FROM ARCHIVE 
WHERE DATUM BETWEEN '$day.$month.$year' AND '$day+1.$month.$year'; 

我節省最多和最大的一個變量,然後我選擇了兩個日期,計算。但是這是4個查詢。有沒有更簡單/更簡單的方法? 此外,DATUM是時間戳

+0

我認爲你的問題需要什麼信息,你到底需要多一點細節。 –

回答

0

可以嘗試:

SELECT DATUM FROM ARCHIVE JOIN (
    SELECT MIN(NREC) AS minid, MAX(NREC) as maxid FROM ARCHIVE 
    WHERE DATUM DATUM BETWEEN '$day.$month.$year' AND '$day+1.$month.$year' 
    AND NCODE = user_id) 
as mm ON mm.maxid = ARCHIVE.NREC OR mm.minid=ARCHIVE.NREC 

如果火鳥什麼工作像MySQL這應該給你兩個時間戳。

+0

這是問題 - FireBird不像MySQL,這就是爲什麼我一直有問題編輯:但是,工程,謝謝:D – ItsGreg

0

什麼

SELECT DATUM, MAX(NREC), MIN(NREC) 
FROM ARCHIVE 
GROUP BY DATUM 

與正確的日期範圍條件下,任意組合?

編輯 當然,這是不會當數據是時間戳工作:/

相關問題