• ベストアンサー

タイムスタンプ型を抽出条件に指定した場合のSQL

タイムスタンプ型を抽出条件に指定した場合、どの様なSQL文を指定すれば良いでしょうか? 該当するレコードは確かに存在していますが、以下のSQL文では「空」になってしまいました。 【実行したSQL文】 SELECT フィールド FROM テーブル WHERE タムスタンプ型フィールド BETWEEN '2011-08-05 20:00:00' AND '2011-08-06 19:59:59' 何卒、ご教授頂ければと存じます。 宜しくお願いします。

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

  • ベストアンサー
回答No.1

一応、 MySQL のタイムスタンプ型について回答します。 TIMESTAMP 型の使用は止められるならやめた方が良いと思います。理由は下を参照。 >TIMESTAMP データタイプは、MySQLのバージョンと、そのサーバーが稼動しているSQLモードによって様々な性質を持っています。これらの性質は、このセクションの後のほうで説明します。 >例えば、TIMESTAMP 値は 1970 以前や、2037 以降にはなり得ないという事です。 http://dev.mysql.com/doc/refman/5.1/ja/datetime.html 閑話休題 >expr BETWEEN min AND max >BETWEEN を日付値または時刻値と使用する場合に最善の結果を得るには、値を所望のデータ タイプに明示的に変換するため、CAST() を使用します。 http://dev.mysql.com/doc/refman/5.1/ja/comparison-operators.html >convert(expr, type) >cast(expr as type) http://dev.mysql.com/doc/refman/5.1-olh/ja/cast-functions.html 以上のことから Cast() または Convert() を使用します。 select フィールド from テーブル where cast(タイムスタンプ型フィールド as DATETIME) BETWEEN '2011-08-05 20:00:00' AND '2011-08-06 19:59:59' たぶん、上のような感じでうまくいくと思います。(試していません) ご参考いただければ幸いです。

jone
質問者

お礼

OrangeCup150様 お礼のご挨拶遅くなり、申し訳ございませんでした。 また、ご教授頂き有難うございます。 試したところ上手く動作しました! タイムスタンプ型が便利に感じていましたので・・・ ご案内頂きました、情報を参照して今後の対応を検討したいと存じます。 少々、悩んでいたので助かりました。 本当に有難うございました。 今後とも何卒、宜しくお願いします。

関連するQ&A