php - Timediff计算where查询

标签 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. GROUP BY 子句中的字段应与 SELECT 子句中的字段相同,但这些字段不是聚合函数。

  2. 您不能在 WHERE 子句中的 SELECT 子句中指定别名。

  3. 如果您想过滤聚合结果,则无法在 WHERE 子句中执行此操作,HAVING 子句就是为此目的而存在的

尝试这样的事情

$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
    " ;

关于php - Timediff计算where查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660211/

相关文章:

php - 如何保存 jQuery UI portlet 插件的顺序?

php - 站点自动切换

php - 发送表单时无响应

mysql - 如何查找查询次数最多的mysql数据库?

java - 128 位(16 字节)GUID 被压缩为多少位或字节?

PHP urlencode 函数

mysql - 在 Mysql 中加入 HQL 更新的替代方法

mysql - bool 字段上的索引用于删除分区表中的记录

database - 数字对象标识符的最大长度?

SQL Join 两个查询结果