[英]Calculate hour difference between two timestamps?
我正在使用 Firebird 進行一個 PHP 項目,關於工作時間。 基本上,每個工人都有一張卡,他在進出大樓時蓋上章。 每個戳記都記錄到ARCHIVE
表中,帶有日期 ( DATUM
)、id ( NREC
) 和 user_id ( NCODE
)。 我要做的是獲取每天的最后一次和第一次,並計算小時數。 所以為了獲得第一個和最后一個,我使用了這個:
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';
我將 max 和 max 都保存在一個變量中,然后選擇這兩個日期並進行計算。 但那是 4 個查詢。 有沒有更簡單/更簡單的方法? 此外, DATUM
是一個時間戳
可以試試:
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
如果 Firebird 像 MySQL 那樣工作,這應該給你兩個時間戳。
關於什么
SELECT CAST(DATUM AS DATE), MAX(NREC), MIN(NREC)
FROM ARCHIVE
GROUP BY 1
(可選)結合正確日期范圍的條件?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.