- - PR -
SQLについて教えてください(MYSQL)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-21 19:40
MYSQLのSQLについての質問です。 初歩的な質問かも知れませんが どうしても自己解決出来ないので 質問させていただきます。 下記のように日付と時刻が別々に格納されたDBより 2008/05/01 07:00:00から2008/05/03 07:00:00の データ(ID1,2,3,4,5,6,)だけを抽出したいのですが、うまくいきません。 ID|createday |createtime 1 |2008/05/01|07:00:01 2 |2008/05/01|23:00:00 3 |2008/05/01|06:00:00 4 |2008/05/02|07:00:01 5 |2008/05/02|23:00:00 6 |2008/05/02|06:00:00 7 |2008/05/03|07:00:01 8 |2008/05/03|23:00:00 9 |2008/05/03|06:00:00 select * from db where (createday >='2008/05/01' and createtime >='07:00:00' or (createday <='2008/05/03' and createtime <='07:00:00' としてみたのですが、思うようなデータにはならず、 下記のようにしてみても結局Whereがcreatedayを見ているので 正しい結果は得られませんでした。 select ID,concat((MID(createday,1,10)) , ' ',(MID(createtime,1,)) createday from db where createday >= '2008/05/01 07:00:00' and createday < '2008/05/03 07:00:00' concatのように結合したフィールドでWHERE条件をかければ うまくいくのではないかと思うのですが、方法がいまいち分かっていません。 参考になるレスなどでも結構ですので、 宜しくご教授のほどお願い致します。 | ||||||||
|
投稿日時: 2008-06-21 19:58
select * from db
where createday >='2008/05/01' and createday >='2008/05/03' and createtime >= 07:00:00 ででるんじゃないの TESTしてないけど 一つの方法としてすべて秒換算にしても求めていたものは出せる | ||||||||
|
投稿日時: 2008-06-21 21:07
MySQLの質問をする場合は、バージョンを明記してください。
MySQL 4.0以前、MySQL 4.1、MySQL 5.0以降で、機能が大きく違いますし、一部の仕様変更もあります。 条件式では、 (1)検索対象の最初の日時以降 (2)検索対象の最後の日時以前 (3)(1)と(2)の間の日付 という、三つの条件が必要になります。
また、SQL Serverを除く主要RDBMSでは、SQL99で標準SQL入りした行値構成子(行値式)を実装しています。指定できる条件式に制限を持つRDBMSもありますが、MySQLは比較演算子に制限はなかったと思います。
| ||||||||
|
投稿日時: 2008-06-22 12:06
皆様
非常に分かりやすくご説明いただきありがとうございます。 where (createday,createtime)>=('2008/05/01','07:00:00') and (createday,createtime)<=('2008/05/03','07:00:00') MYSQLのバージョンによるのか、この方法はSQLエラーとなりましたが 下記であれば、問題なく抽出できました。 select * from db where createday='2008/05/01' and createtime>='07:00:00' or createday>'2008/05/01' and createday<'2008/0503' or createday='2008/05/03' and createtime<='07:00:00' (1)検索対象の最初の日時以降 (2)検索対象の最後の日時以前 (3)(1)と(2)の間の日付 という、三つの条件が必要になるという基本が理解できました。 有難う御座いました。 |
1