• ベストアンサー

where文について

2008-10-28のような形式でMYSQLに生年月日を登録しています。 フォームのセレクトボックスにて誕生月のみを取得しlike文では なくwhere文でデータの読み込みを行いたいのですがどうやれば できるのでしょうか? 通常だと "SELECT * FROM テーブル名 where カラム名 = '200-10-28' " でいけると思うのですが誕生月のみの情報で "SELECT * FROM テーブル名 where カラム名 = '10' " とやっても無理ですよね^^; $_POST['birth_month']で誕生月を取得し数字は01~12までです。 ※取得は問題なくできておりわからないのがwhere文の書き方です。 できるだけシンプルな方法で行いたいのですがお分かりになる方が おりましたら是非ご教授お願い致します!

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

  • ベストアンサー
  • rally
  • ベストアンサー率28% (32/111)
回答No.1

シンプルに! "SELECT * FROM テーブル名 where DATE_FORMAT(カラム名, '%m') = '10' "

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

SELECT * FROM テーブル名 where MONTH(カラム名) = '10' でいけそうですが、インデックスなど高速処理はできません。 インデックスが必要であれば、月を独立したカラムや外部テーブル で別管理することをおすすめします (まぁよほど膨大なデータでないかぎり、今回の件はインデックスが かならずしも必要だとはおもいませんが)

dcx147
質問者

お礼

お返事ありがとうございます。 多数の方法があり驚きましたが全て成功でした☆ なかなかwhere文での応用がわからず苦労しておりましたが 皆様のおかげで無事に解決です! この場を借りてお礼とさせて頂き解決と致します。 ありがとうございました^^

noname#172317
noname#172317
回答No.2

こんにちは。 こちらで、いかがでしょ? SELECT * FROM テーブル名 WHERE substring(カラム名, 6, 2) = '10' 【2008-10-28】の頭から6番目より2つ抜き取る

関連するQ&A