アプリ版:「スタンプのみでお礼する」機能のリリースについて

2008-10-28のような形式でMYSQLに生年月日を登録しています。
フォームのセレクトボックスにて誕生月のみを取得しlike文では
なくwhere文でデータの読み込みを行いたいのですがどうやれば
できるのでしょうか?

通常だと
"SELECT * FROM テーブル名 where カラム名 = '200-10-28' "
でいけると思うのですが誕生月のみの情報で
"SELECT * FROM テーブル名 where カラム名 = '10' "
とやっても無理ですよね^^;

$_POST['birth_month']で誕生月を取得し数字は01~12までです。
※取得は問題なくできておりわからないのがwhere文の書き方です。

できるだけシンプルな方法で行いたいのですがお分かりになる方が
おりましたら是非ご教授お願い致します!

A 回答 (3件)

シンプルに!



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

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/date-and- …
    • good
    • 0

SELECT * FROM テーブル名 where MONTH(カラム名) = '10'


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

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

お礼日時:2008/10/28 16:40

こんにちは。


こちらで、いかがでしょ?

SELECT * FROM テーブル名 WHERE substring(カラム名, 6, 2) = '10'

【2008-10-28】の頭から6番目より2つ抜き取る
    • good
    • 0

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