计算两个时间戳之间的小时差


Calculate hour difference between two timestamps?

我正在做一个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是一个时间戳

Could try:

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

可选地与正确日期范围的条件组合?