
mysql5.1を利用してデータベースを作成しています。
テーブルに年と月を別々で収納しているのですが、
そのテーブルの中のデータから「今月を過ぎていなければ」という条件で抽出したいのですが、
SQLの書き方がわかりません。
私のSQLの基礎の基礎しか教えてもらっておらず、
あとは独学で、現在のレベルはようやく少しサブクエリを書き出した(学びだした)レベルです。
しかもwindows上のNavicat Lite(アプリ)上で書いてる状態です。
自分のイメージ的には下記のような感じなのですが、動きません。
どなたか教えていただけないでしょうか。
よろしくお願いします。
hoge_tblテーブルからBカラムが'hoge'かつ、
hoge_tblテーブル内のYEARカラムとMONTHカラムの値を今月と比較して、
「今月を過ぎていなければ」といった条件を付けたいと考えております。
select A from hoge_tbl where B = 'hoge' and
(select date_format(now(),'%Y%m') as NOW) <
(select date_format('(select YEAR,MONTH from hoge_tbl )’,'%Y%m') as END)
No.3ベストアンサー
- 回答日時:
SELECT A FROM hoge_tbl WHERE B='hoge' AND
DATE_FORMAT(NOW(),'%Y%m')<
CONCAT(YEAR,CASE LENGTH(MONTH) WHEN 1 THEN '0' ELSE '' END,MONTH)
です。
ただし、年、月をCHARで設定する方法はあまりお勧め出来ません。
お礼が遅くなって申し訳ありません。
長い時間かかってようやく解決いたしました。(ずっとやっていたわけではありませんが。。。)
文法的に教えていただいた記述の内容が理解できたのですが、
そうしてもうまく動かず、自分におデータベースの作成内容に疑問を持ってしまい、YEARとMONTHをそれぞれ比較して動かしていたところ、年を過ぎるところでおかしくなりました。
また今回実数を代入してみたり、あれこれ試してみたところ、結局 『 ' 』 の記述する部分などに誤りがあったようで、『 ' 』が必要な部分と不要な部分をあれこれ試して結果うまくいきました。
うまくいった文を教えていただいたものと比較したところ、まったく教えていただいた通りでした。。。
回り道をしてしまい、かつお礼が遅くなってしまってすみません。
ただ最初に教えていただいた内容の文法を理解して、今回あらためて取り組んだことにより解決できました。
本当にありがとうございました。
No.2
- 回答日時:
まず、数字をcharで管理すると状況によって想定外の結果を返す場合が
あることを理解しなくてはいけません。
とくにSQLでその手の持ち方をすると効率もわるく、あまりお勧めしません。
ちなみにサブクエリを覚えたてでなんとなく使いたいころなのでしょうけど
これはサブクエリで処理する内容じゃないと思いますよ・・・
ロジックとしては・・・
今日の年がYEAR以下か、今日の年がYEARと同等かつ今日の月がMONTH以下
と考えれば、こんな感じ?
select A from hoge_tbl where B = 'hoge' and
(YEAR(@TODAY:=CURDATE())<`YEAR`
OR YEAR(@TODAY)=`YEAR` AND MONTH(@TODAY)<=`MONTH`)
お礼が遅くなって申し訳ありません。
見ようみまねでやっていたのですが、どうしても動かず
DATE_FORMAT(NOW(),'%Y') <= YEAR AND DATE_FORMAT(NOW(),'%m') <= MONTH
のようにしていましたが、当然年をまたぐところでうまくいかなくなってしまいました。
今一度やりなおしてみたところうまくいきました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
group byで最後のレコードを抽...
-
データの暗号化について
-
データ型による検索速度の違い...
-
誤って削除したIDカラムを復元...
-
他のシートの検索
-
AUTO_INCREMENTに0はダメ?
-
SELECT文で、指定カラム以外の...
-
一部のカラムでdistinctし全て...
-
DBの定義のサイズを大きくし過...
-
インデックスの一意な値の数に...
-
ROUND関数で、四捨五入ができな...
-
BULK INSERT時のNull許容について
-
レコード200万、カラム60,こう...
-
波形データを格納するデータベース
-
社名でデータ抽出できる検索シ...
-
mysql 全文検索で引っかからな...
-
mysqlで50音順にorder byしたい。
-
【Transact-sql】 where条件、i...
-
JDBCドライバがない?
-
LOAD DATA INFILE での関数の扱い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルの列数を調べたい
-
[MySQL]LOAD DATA INFILE一部レ...
-
group byで最後のレコードを抽...
-
MYSQLで小数点を表示する場合と...
-
WHEREなどの条件が多い場合、ど...
-
MySQL 改行コードを含む文字列...
-
データを同データが並ばないよ...
-
同一日に複数レコードがある場...
-
sqlについて質問です。
-
MySQL AUTO_INCREMENTが最大に...
-
betweenを使うyyyy/mm/ddでの範...
-
mysqlの結果の速度はデータの違...
-
データ型による検索速度の違い...
-
カラムの値を、条件により動的...
-
フレンドリストのようなものを...
-
年月日のうち月日だけ取得したい。
-
MYSQLのストアドでの動的SQLに...
-
select * での表示が崩れる?
-
MySQLデータでデータチェック
-
データの暗号化について
おすすめ情報