こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

where文について

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

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

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

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

投稿日時 - 2008-10-28 14:58:58

QNo.4436383

困ってます

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

シンプルに!

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

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

投稿日時 - 2008-10-28 15:39:35

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

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

投稿日時 - 2008-10-28 15:53:27

お礼

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

投稿日時 - 2008-10-28 16:40:04

こんにちは。
こちらで、いかがでしょ?

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

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

投稿日時 - 2008-10-28 15:50:46

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-