• 締切済み

MysqlとPHPで5年前のものを絞込する方法

MysqlのDATA型 sqlDATAがあります。 sqlDATAを基準に10年以内、20年以内、30年以内、というように絞り込みたいです。 $date1 = '2011-10-16'; $date2 = date('Y-m-d'); list($Y1,$M1,$D1) = sscanf($date1,'%d-%d-%d'); list($Y2,$M2,$D2) = sscanf($date2,'%d-%d-%d'); $Y3 = $Y1-($Y2-$Y1); $date3 = "{$Y3}-{$M1}-{$D1}"; $s = 'SELECT * FROM table WHERE sqlDATA<'.$date2.' sqlDATA>='.$date3; こういうやり方でよいのでしょうか。

みんなの回答

  • ponta1971
  • ベストアンサー率30% (361/1191)
回答No.2

$data2は今日の日付ですよね。 $data1はなんの日付でしょうか? >MysqlのDATA型 sqlDATAがあります。 sqlDATAを基準に10年以内、20年以内、30年以内、というように絞り込みたいです。 テーブルに保存されているデータの中から任意のデータを選択し、選択したデータに格納されている日付がsqlDATAということかと思ったのですがあっているでしょうか? sqlDATAを基準にするということは、sqlDATAは任意の一つのデータとなると思います。 書かれているソースの$date1がsqlDATAを表しているのかと思ったのですが、それ以下のソースを見る限り、そういうわけでもなさそうですし・・・。 >$Y3 = $Y1-($Y2-$Y1); この式だと、$date1が1年前なら$Y3には2年前、$date1が5年前なら$Y3には10年前といった日付が入ることになると思います。 10年以内、20年以内、30年以内といった絞込み条件にはならないかと。 ここから、こういったことがしたいのかなと予想してです。 テーブルの中のsqlDATAに日付が格納されているとして 今日の日付から10年以内のデータを抽出する場合。 $s = 'SELECT * FROM table WHERE sqlDATA<='.date('Y-m-d').'AND sqlDATA>='.date('Y')-10.'-'.date('m-d'); 任意の指定したデータの日付$date1から10年以内のデータを抽出する場合。 $date1 = '2011-10-16'; list($Y1,$M1,$D1) = sscanf($date1,'%d-%d-%d'); $date = ($Y1-10).'-'.$M1.'-'$D1; $s = 'SELECT * FROM table WHERE sqlDATA<='.$date1.'AND sqlDATA>='.$date;

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

date1 = '2011-10-16'; $s = 'SELECT * FROM table WHERE sqlDATA BETWEEN (@d:="'.$date1.'") - INTERVAL 10 YEAR AND @d - INTERVAL 1 DAY'; みたいな感じでよいのでは?

すると、全ての回答が全文表示されます。

関連するQ&A