• ベストアンサー

datetime型の日付検索について

宜しくお願いします。 datetime型のカラムに収められたデータから日付のみの検索方法が分かりません。 例えば、2005-12-25 10:20:30/2005-12-25 10:25:35 という様に、同じ日付ですが、時間が違う場合に、日付だけで検索する方法がわかりません。 どなたかご指導の程、宜しくお願い致します。 尚、MySQLのバージョンは、4.1.12です。

  • nikuq
  • お礼率75% (477/631)
  • MySQL
  • 回答数2
  • ありがとう数6

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 例の、2005-12-25 10:20:30と2005-12-25 10:25:35 の両方のデータを取得したいということでしょうか。 (2005-12-25の情報を取得したい) ということでしたら、datetime型のカラム名がREGISTDATEだとすると WHERE REGISTDATE>='2005-12-25 00:00:00' AND REGISTDATE<='2005-12-25 23:59:59' 2005年12月25日の0時0分0秒より大きく、かつ、2005年12月25日の23時59分59秒より小さい そうすれば2005-12-25の情報を取れます。

nikuq
質問者

お礼

ありがとうざいます! 早速やってみました。思っていた通りの結果が返されました。 本当にありがとうございます!

その他の回答 (1)

  • mac_mini
  • ベストアンサー率42% (54/128)
回答No.2

恐らく、date_format関数でも出来ますし、 substring関数でも出来ます。 例としては以下になります。 select * from テーブル where date_format(日付, '%Y-%m-%d') = '2005-12-25';

nikuq
質問者

お礼

ありがとうございます! Ano.1の方に教えていただいた方法と全く同じ結果が返されました。 どちらでも同じ結果が得られるので、後は、前後のSQLの状態で使い分けてみたいと思います。 本当にありがとうございました!!

関連するQ&A

  • DateTime型の検索

    お世話になっております。 質問内容は基本的な事かもしれませんがご容赦ください。 あるテーブルにDateTime型のフィールドがあり、Insertした日時を保存しています。 このフィールドに対して、日付のBETWEENや時間のBETWEENで検索かけるにはどうしたら良いのでしょうか。 例えば、 時間は未指定だけど、1月1日から1月31日までのデータを検索 SELECT * FROM table WHERE insertDT BETWEEN '01-01' AND '01-31' 日付は不明だけど、7:00から12:00までのデータを検索する等です。 SELECT * FROM table WHERE insertDT BETWEEN '07:00' AND '12:00' これら試しましたが、正常な結果が得られず困っています。 不明な部分の代替文字でもあるのでしょうか。 SELECT * FROM table WHERE (insertDT >= '07:00' AND insertDT <= '12:00') これも試しましたがやはりダメでした。 どなたかご教示の程、よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • datetime型の秒を切り捨てるには?

    PHP&MySQLで、日付時間入力のフォームを作成しています。 日付時間表示は、「2015年11時4分 7:00」という表示フォーマットにしたいのです。 日付時間入力フォームは、 https://www.softel.co.jp/blogs/tech/archives/4294 こちらを参考にして、datetimepickerのカレンダー入力に、時間入力を組み合わせたデモサンプルを利用しています。 年日時間を個別にデータベース管理する必要はなく、日時分まで管理したいことから、データベースのほうはひとつのカラムにdatetime型で定義しました。 datetimeなので、「2015-11-04 07:00:00」で格納されます。 そこからこの値をとりだして、画面表示させたいのですが、 「2015年11時4分 7:00」で表示させるために、秒を切り捨てたいのですが、 この場合どうすればいいのでしょうか? ************************** mySql:ver5.6 PHP:ver5.4 phpMyAdmin 3.4.9 型:datetime

    • ベストアンサー
    • PHP
  • MySQLのDatetime型の検索方法

    MySQLのDatetime型で 時間部分が00:00:00のデーターだけを抽出する方法を教えてください。 MySQLのデータ(列:Datetime型) 2011-12-01 00:00:00 2011-12-01 20:15:45 2011-12-01 20:46:45 2011-12-02 00:00:00 2011-12-02 11:11:11 2011-12-03 22:22:22 2011-12-04 00:00:00 このようなデータの中から時間部分が「00:00:00」のものを抽出したいと思います。 求める結果は 2011-12-01 00:00:00 2011-12-02 00:00:00 2011-12-04 00:00:00 です。 期間で抽出するのであれば SELECT * FROM `テーブル名` WHERE date>='2012/12/05 00:00:00' AND date<='2012/12/07 23:59:59' のようなクエリで良いと思うのですが、「00:00:00:」が含まれるものだけを抽出しようと思うとうまくいきません。 LIKE 00:00:00 でできるかもしれないと思いましたがダメでした。

    • ベストアンサー
    • MySQL
  • MySQLのdatetime型に0月0日を格納

    MySQLのdatetime型カラムに「月」や「日」だけ不明なデータを格納したいのですが、どうすれば良いでしょうか? ・具体的なパターンは、下記3フォーマットの何れかです ・2013-03-02 ・2013-03 ・2013 ※月日が不明なデータは全体の一部 ■案1 ・不明な日付を0に置き換え格納 ・2013-03-00 ・2013-00-00 ■案2 ・不明な日付を1に置き換え格納 ・2013-03-01 ・2013-01-01 ※本来の日付と見分けがつかなくなる ■質問 ・日付不明が後で判別できるよう、出来れば0で置き換えたい ・MySQL的に問題ないでしょうか? ・一般的に日付が不明なデータはどのように処理するのでしょうか? ■環境 ・MySQL ・PHP

    • ベストアンサー
    • MySQL
  • MySQL「 INT」「 DATETIME」違い

    MySQLの「 INT」型と「 DATETIME」型の違いを教えてください。 ・「 DATETIME」型とは、単に日付形式を担保してくれる型に過ぎないのでしょうか? ・日付形式(フォーマット)以外を挿入すると、「0000」になってしまうということでしょうか? ■「 DATETIME」メリット ・データ内容が見た目で分かる以外、何があるのでしょうか? ■「 INT」メリット ・早い?

    • ベストアンサー
    • MySQL
  • 日付検索で0000-00-00 00:00:00を除外したい

    日付検索で0000-00-00 00:00:00を除外したい mysql5.0 データ型はdatetimeで日付検索をしたのですが、 日付が"0000-00-00 00:00:00"で登録されているデータも 検索結果に表示され困っています。 例えば、 SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') →これだと、hizukeが0000-00-00 00:00:00のデータも表示されてしまいます。 日付が0000-00-00 00:00:00で登録されているデータを除外するため 自分もいろいろしてみたのですができません。どなたか教えていただけないでしょうか。 参考までに、自分が試したsql文を書きます。↓ SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke != '0000-00-00 00:00:00') SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke <> '0000-00-00 00:00:00') SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke not in ('0000-00-00 00:00:00')) →上記載のsqlはすべて検索件数が0になってしまいました。 もうわからなくなってしまったので、アドバイスお願いします。

    • ベストアンサー
    • MySQL
  • datetime型で日付計算ができません。

    開始日時(start_date)の20日を経過したレコードを削除したいのですがSQLで行う方法がわかりません。 start_dateはMySQLのdatetime型です。 select * from test where start_date + 20days < now() な感じ消せると思ったのですが調べても方法が 見つかりませんでした。

    • ベストアンサー
    • MySQL
  • MySQLのDatetime型の引き算

    ある機械の1日当たりの処理数を計算したいと思います。 Datetimeの引き算がうまくいかないので、解決方法を教えてください。 1日当たりの処理数は下記の式で計算できます。 1日当たりの処理数=期間内処理数÷((現在日時-作業開始日時)÷(60×60×24)) ※現在日時-作業開始日時で期間の秒数を計算 それを1日の秒数=86400秒(60秒×60分×24時間)で割る。 ------------------ 環境 MySQL:5.0.77 ------------------ テーブル: test カラム :num(INT型),start_date(DATETIME型) ※numは期間内の機械の処理数です。 まず、上記の1日当たりの処理数の数式をSQL文に反映させてみました。 SELECT num , num/((now()-start_date)/86400) as shorisu FROM test 結果は表示されるのですが、かなり大きな数値になって出てきてしまいます。 WEBで情報を検索したところ、DATETIME型を直接減算すると求める結果にならないことはわかりました。 MySQLのページ(11.5. 日付時刻関数) http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html を見てみましたが、どの関数を使えばよいのかいまいちわかりません。 now()-start_dateの部分が正しい値を返すようになれば良いのですが、どのような式を書けばよいのでしょうか?

    • ベストアンサー
    • PHP
  • 日付だけを見てデータをSELECTしたい

    お世話になっております。 開発環境:MySQL3.23.58にて、DATETIME型で日付をYYYY-MM-DD hh:mm:ssで登録しています。 そこから、下のように SELECT * FROM テーブル名 WHERE DATE( フィールド名 ) = '2007-09-12'; などと、日付だけを見てデータを抽出したい(時間は無視したい)のですが、マニュアルを見ると 『DATE() は MySQL 4.1.1 以降で使用できる。』 と書いてあり、やり方が分からず途方にくれております。 上記環境下で、うまく日付のみを見てデータを抽出する術は無いものでしょうか。 アドバイスをいただけたらと思います。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • ASP.NET 2.0(C#) Datetime型

    サーバー日付を取得して、日付の部分のみを書き換えたいのですが、方法が分かりません。 どなたか教えていただけないでしょうか・・ ASP.NET 2.0(C#)です。 実現したい内容は Datetime dt = DateTime.now;(例えば 20080101...) string day = "28"; // dtの日付部分にdayの"28"を入れたいわけです。 Datetime dt2 = (20080128...にしたいです) 色々調べてみたのですが、まだまだ経験が浅いせいか、良い方法を見つけることが出来ません。 よろしくお願いします(>_<)