2011-11-01 185 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 

与正确的日期范围条件下,任意组合?

编辑 当然,这是不会当数据是时间戳工作:/

相关问题