電子書籍の厳選無料作品が豊富!

タイムスタンプ型を抽出条件に指定した場合、どの様なSQL文を指定すれば良いでしょうか?
該当するレコードは確かに存在していますが、以下のSQL文では「空」になってしまいました。

【実行したSQL文】
SELECT フィールド
FROM テーブル
WHERE
タムスタンプ型フィールド
BETWEEN
'2011-08-05 20:00:00'
AND
'2011-08-06 19:59:59'

何卒、ご教授頂ければと存じます。
宜しくお願いします。

A 回答 (1件)

一応、 MySQL のタイムスタンプ型について回答します。



TIMESTAMP 型の使用は止められるならやめた方が良いと思います。理由は下を参照。

>TIMESTAMP データタイプは、MySQLのバージョンと、そのサーバーが稼動しているSQLモードによって様々な性質を持っています。これらの性質は、このセクションの後のほうで説明します。

>例えば、TIMESTAMP 値は 1970 以前や、2037 以降にはなり得ないという事です。
http://dev.mysql.com/doc/refman/5.1/ja/datetime. …

閑話休題

>expr BETWEEN min AND max

>BETWEEN を日付値または時刻値と使用する場合に最善の結果を得るには、値を所望のデータ タイプに明示的に変換するため、CAST() を使用します。
http://dev.mysql.com/doc/refman/5.1/ja/compariso …

>convert(expr, type)
>cast(expr as type)
http://dev.mysql.com/doc/refman/5.1-olh/ja/cast- …

以上のことから Cast() または Convert() を使用します。

select フィールド from テーブル
where cast(タイムスタンプ型フィールド as DATETIME) BETWEEN '2011-08-05 20:00:00' AND '2011-08-06 19:59:59'

たぶん、上のような感じでうまくいくと思います。(試していません)
ご参考いただければ幸いです。
    • good
    • 1
この回答へのお礼

OrangeCup150様
お礼のご挨拶遅くなり、申し訳ございませんでした。
また、ご教授頂き有難うございます。
試したところ上手く動作しました!

タイムスタンプ型が便利に感じていましたので・・・
ご案内頂きました、情報を参照して今後の対応を検討したいと存じます。
少々、悩んでいたので助かりました。
本当に有難うございました。

今後とも何卒、宜しくお願いします。

お礼日時:2011/08/08 01:02

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