• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのDATE型と年の比較)

MySQLのDATE型と年の比較

このQ&Aのポイント
  • PHPとMySQLでレポートの作成・管理を行う際に、DATE型を使用してレポートの日付を登録しています。一覧表示では、今年のレポートのみを表示したいのですが、うまくできません。
  • SQL文を使用して、登録日が今年のものだけを表示するようにしていますが、すべてのレポートが表示されてしまいます。
  • ただし、【前年へ】・【次年へ】のボタンを押すことで、表示中の前の年や次の年のレポートを表示する機能も実装したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.4

> このままだとちゃんと検索されませんでした。 ごめんなさい、コピペミスです。 > こんな場合はmktimeでこんば場合はgetdateの方が良いみたいなのがあるんですか?日付関数を初めて使ったので使い方がイマイチわからないんです・・・ いや、私もあまり詳しくは分かりませんが、マニュアルに、 与えられた引数に従って UNIX のタイムスタンプを返します。 このタイムスタンプは、Unix epoch(1970年1月1日)から 指定された時刻までの通算秒を表す長整数です。 Windows: 負の値のタイムスタンプはWindowsのどのバージョンにおいてもサポートされていません。 したがって、年の有効範囲は1970年から2038年の間のみです。 と書かれているし、コーディング量も少ないかなってことで日付系はgetdateを使ってます。 適当で申し訳ないですが、こんな感じで。

その他の回答 (3)

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.3

$time = date("Y-m-j", $time); だと、2005-04-4 となるはずです。 いけたということは、re11 には 2004、2005 というデータが入っているということですね。 これくらいであれば、mktime使うよりgetdateの方が良いのではないですか。 こんな感じで。 $today = getdate(); $sql = "SELECT * FROM t_repo WHERE re11 >= " .$today[year]. " ORDER BY re11";

amountainblast
質問者

お礼

何度もありがとうございます。 $today = getdate(); $sql = "SELECT * FROM t_repo WHERE re11 >= " .$today[year]. " ORDER BY re11"; ですが、 このままだとちゃんと検索されませんでした。 $today = getdate(); $sql = "SELECT * FROM t_repo WHERE date_format(re11, '%Y-%m-%e') >= " .$today[year]. " ORDER BY re11"; とWHEREのre11もdate_formatするとできました・・・。 getdate関数のこんな使い方があるんですね。勉強になりました。 ついでで申し訳ございませんが、 こんな場合はmktimeでこんば場合はgetdateの方が良いみたいなのがあるんですか?日付関数を初めて使ったので使い方がイマイチわからないんです・・・

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.2

$timeにはどのような値が入ることを想定していますか? 実際に何が入っていますか。 補足ください。

amountainblast
質問者

お礼

$timeには初めは今年の年が 【前年へ】・【次年へ】のリンクをおされたら、 前の年の値・次の年の値が入るようにしようとしています。。 そこでよく考えたら $time = mktime(); $time = date("Y-m-j", $time); だと日付まで入ってしまいますよね??? $time = date(Y, $time);としたらいけました・・・。 難しいですね・・・。 ありがとうございました。

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.1

MySQLのバージョンが分かりませんが、 $sql = "SELECT * FROM t_repo WHERE date_format(re11, '%Y-%m-%e') >= " .$time. " ORDER BY re11"; これでどうですか?

amountainblast
質問者

お礼

なるほどdate_formatを使うのですね・・・。 でも残念ながら同じでした・・・ バージョンは OS FreeBSD 5.3-RELEASE MySQL 4.0.24 PHP 4.3.10 です。

関連するQ&A

専門家に質問してみよう