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の形式が であると仮定すると、代わりにを%d/%m/%Y使用してレコードをフィルタリングできます。 havingwhere

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

この場合にHAVINGand notを使用する理由は、計算列であるためです。WHEREtime

于 2013-08-24T15:27:31.710 に答える
0

これは、句の同じレベルで作成されたALIASin the句を使用しているためです。それを機能させるには2つの方法があります。WHERESELECT

1 つ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'

WHERESQL の操作順序では、句が句の前に実行されるALIASため、使用できません。操作の順序のリストは次のとおりです。WHERESELECT

  • FROM 句
  • WHERE句
  • GROUP BY 句
  • HAVING 句
  • SELECT 句 (エイリアスはここで作成されます)
  • ORDER BY 句
于 2013-08-24T15:25:49.720 に答える