我不知道为什么它不能正常工作......我试图通过"像这样创建的变量:
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");
答案 0 :(得分:1)
假设变量$hr
的格式为%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
是计算列。
答案 1 :(得分:0)
这是因为您在ALIAS
子句的同一级别创建的WHERE
子句中使用了SELECT
。有两种方法可以使它工作,
一个,直接在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
子句之前执行。以下是操作顺序列表: