0

我不知道为什么它不起作用......我试图“排序”这样一个创建的变量:

mysql_query("SELECT *,DATE_FORMAT(FROM_UNIXTIME(banfrom), '%d/%m/%Y') as time FROM ab_list WHERE time = '24/08/2013' ORDER BY banfrom DESC LIMIT 0,50");

或者,

   $hr = date('d/m/Y');
   mysql_query("SELECT *,DATE_FORMAT(FROM_UNIXTIME(banfrom), '%d/%m/%Y') as time FROM       ab_list WHERE time = '$hr' ORDER BY banfrom DESC LIMIT 0,50");
4

2 回答 2

1

假设变量$hr是 format %d/%m/%Y,您可以使用having而不是where过滤记录。

mysql_query("SELECT *,DATE_FORMAT(FROM_UNIXTIME(banfrom), '%d/%m/%Y') as time 
             FROM ab_list 
             HAVING time = '$hr' 
             ORDER BY banfrom DESC 
             LIMIT 0,50");

在这种情况下使用HAVING而不是使用的原因WHERE是因为time是计算列。

于 2013-08-24T15:27:31.710 回答
0

这是因为您使用的是ALIASWHERE子句的同一级别上创建的 inSELECT子句。有两种方法可以让它工作,

WHERE、在子句中直接使用计算列

WHERE DATE_FORMAT(FROM_UNIXTIME(banfrom), '%d/%m/%Y') = '24/08/2013'

、使用子查询

SELECT a.*
FROM   (put your whole query here) a
WHERE  a.time = '24/08/2013'

WHERE不能使用ALIAS,因为在SQL 操作顺序中,子句在子句WHERE之前执行SELECT。以下是操作顺序列表:

  • FROM 子句
  • WHERE 子句
  • GROUP BY 子句
  • HAVING 子句
  • SELECT 子句(此处创建别名
  • ORDER BY 子句
于 2013-08-24T15:25:49.720 回答