集合写真、どこに映る?

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;

こういうやり方でよいのでしょうか。

A 回答 (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;
    • good
    • 0

date1 = '2011-10-16';


$s = 'SELECT * FROM table WHERE sqlDATA BETWEEN (@d:="'.$date1.'") - INTERVAL 10 YEAR AND @d - INTERVAL 1 DAY';

みたいな感じでよいのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報