如何从 MySQL 日期时间中减去日期,其中 table 被指定为 MySQL 函数。

How to subtract date from MySQL datetime where table is specified as a MySQL function.

我正在使用以下 '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)" 的完整代码。

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 p.DATE(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'];
}

这个怎么写'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 转换为日期,请使用 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