Timediff calucate在哪里查询

时间:2017-10-10 06:45:18

标签: php mysql database time

我有一个查询,我计算每个用户的工作时间。

$sql = "
SELECT actief
     , userid
     , DATE_FORMAT(datum, '%x - %V')
     , username
     , min_urenperweek
     , SEC_TO_TIME(SUM(TIME_TO_SEC(tijd_tot) - TIME_TO_SEC(tijd_van))) timediff
  FROM " . TBL_URENREGISTRATIE . " ur
  JOIN " . TBL_CMS_USERS . " us 
    ON us.userid = ur.userid
 GROUP 
    BY YEARWEEK(datum)
     , userid 
 ORDER 
    BY us.username ASC
    " ;

我想要的是:如果min_urenperweek让它说40小时而timediff超过40小时,我不希望它显示它是否小于40然后我想显示它

我尝试了Where min_urenperweek <= timediff,但它不起作用

1 个答案:

答案 0 :(得分:1)

  1. GROUP BY子句中的字段应与SELECT子句中不属于聚合函数的字段相同。

  2. 您无法在SELECT子句中的WHERE子句中指定别名。

  3. 如果要过滤聚合的结果,则不能在WHERE子句中执行此操作,为此目的存在HAVING子句

  4. 尝试这样的事情

    $sql = "
    SELECT actief
         , userid
         , DATE_FORMAT(datum, '%x - %V')
         , username
         , min_urenperweek
         , SEC_TO_TIME(SUM(TIME_TO_SEC(tijd_tot) - TIME_TO_SEC(tijd_van))) timediff
      FROM " . TBL_URENREGISTRATIE . " ur
      JOIN " . TBL_CMS_USERS . " us 
        ON us.userid = ur.userid
     GROUP 
        BY actief
         , userid 
         , DATE_FORMAT(datum, '%x - %V')
         , username
         , min_urenperweek   
     HAVING min_urenperweek <= timediff
     ORDER 
        BY us.username ASC
        " ;