Php 如何从MySQL datetime中减去日期,其中表被指定为MySQL函数。

Php 如何从MySQL datetime中减去日期,其中表被指定为MySQL函数。,php,mysql,sql,datetime,Php,Mysql,Sql,Datetime,我使用以下“日期(时间)”从datetime获取日期,并且工作时没有错误 SELECT * FROM $t WHERE owner = '$sn' && DATE(time) = '$d'; 但是,当表是联合的时,我尝试使用“p.DATE(time)”并得到这个错误 FUNCTION p.DATE does not exist. Check the 'Function Name Parsing and Resolution' 下面是我使用“p.DATE(time)”的完整代码

我使用以下“日期(时间)”从datetime获取日期,并且工作时没有错误

SELECT * FROM $t WHERE owner = '$sn' && DATE(time) = '$d';
但是,当表是联合的时,我尝试使用“p.DATE(time)”并得到这个错误

FUNCTION p.DATE does not exist. Check the 'Function Name Parsing and Resolution'
下面是我使用“p.DATE(time)”的完整代码


如何编写此“p.DATE(time)”?

您正在为函数分配别名。只要写在列名上就行了

 function get_m_stats($con,$sn,$d=NULL,$t=NULL,$o=NULL){
$get_day = mysqli_query($con, "
SELECT m.* , COUNT(p.sid) frequency FROM music m
  JOIN $t p 
  ON p.sid = m.sid 
  WHERE p.sid != '' AND p.owner = '$sn' AND DATE(p.time) = '$d'    
  AND m.perms = 'a'
  GROUP BY m.sid 
  ORDER BY frequency $o 
  LIMIT 1") or die(mysqli_error($con));
$row_day = mysqli_fetch_array($get_day);
echo $row_day['title'];
}
我确信
DATE()
是一个MySql函数-因此它不能存在于表格引用变量
p

因此,获取数据的正确方法是获取
p.time
,如果要将dateTime转换为date,请使用MySql函数
date

因此,您的查询应该是:

SELECT m.* , COUNT(p.sid)as frequency 
FROM music m JOIN $t p 
  ON p.sid = m.sid 
  WHERE p.sid != '' 
  AND p.owner = '$sn' 
  AND DATE(p.time) = '$d'    
  AND m.perms = 'a'
  GROUP BY m.sid 
  ORDER BY frequency $o 
  LIMIT 1

这将是您的
日期(p.time)
旁注:这样使用
日期将防止数据库使用索引。如果以范围()进行查询,则应该能够。
SELECT m.* , COUNT(p.sid)as frequency 
FROM music m JOIN $t p 
  ON p.sid = m.sid 
  WHERE p.sid != '' 
  AND p.owner = '$sn' 
  AND DATE(p.time) = '$d'    
  AND m.perms = 'a'
  GROUP BY m.sid 
  ORDER BY frequency $o 
  LIMIT 1