0

次の行を含む SQL コマンドがあります。

HAVING
   DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y')
   - (DATE_FORMAT(NOW(), '00-%m-%d')
   < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) <= ". $v

$vは、10 の倍数で乗算する整数である PHP 変数です。$v 未満の DOB を持つすべてのエントリを探す代わりに、DOB がそれよりも小さいが、それより$vも大きいすべてのエントリを返したいと考えて$v - 10います。 ?

4

1 に答える 1

0

持っているステートメントをselect句に移動し、それにエイリアス(たとえば、calculatedValue)を割り当てて、having句でエイリアスを使用できます。最終的なSQLクエリは次のようになります。

  select 
      DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) calculatedValue
  from 
    candidates 
  having 
    calculatedValue <= 15 and calculatedValue > 5

phpスクリプト内で使用するには、少し変更する必要があります。フォーマットを行いましたが、読みにくくなりました。

于 2011-11-17T15:43:15.263 に答える