joppot

コピペで絶対動く。説明を妥協しない

プログラミング

Mysqlのdatetime型とtimestanp型で保存されているデータを年月日だけを指定して任意の日にちのデータを取得する方法

投稿日:2014年3月19日 更新日:


feli-21

概要

みなさんこんにちはcandleです。今日はmysqlのdatetime型とtimestanp型におさめられているデータの取得を紹介します。

datetimeやtimestanpは多くの場合下のようなフォーマットでデータが保存されています。

2014-03-23 10:23:41

故に、下のSQLではデータが取得できません。

SELECT * FROM users WHERE created =  '2014-03-23'

これの対処の仕方を紹介します。

前提

  1. mysqlが自由に動かせる環境

テストデータベースを用意する

下のSQLを使用して今回も紹介します。下のSQL文を実行してusersテーブルと3つのレコードを作成してください。

私はbtestデータベースの中に作成します。

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `password` varchar(255) NOT NULL,
  `age` int(10) NOT NULL,
  `created` datetime NOT NULL,
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `users` (`id`, `name`, `password`, `age`, `created`, `modified`) VALUES
(1, 'alice', '', 10, '2014-02-14 05:29:13', '2014-03-18 10:23:35'),
(2, 'bob', '', 12, '2014-02-17 21:11:44', '2014-02-18 00:40:43'),
(3, 'tom', '', 15, '2014-02-18 04:37:07', '2014-02-18 00:41:18');

MAMPの場合はデータベースを選択した後、「SQL」を押します。

https://joppot.s3.amazonaws.com/wp-content/uploads/2014/03/MAMP2-630x236.jpg

テキストエリアのところに、上のSQL文を貼付けて、実行すればusersテーブルが作れます。

https://joppot.s3.amazonaws.com/wp-content/uploads/2014/03/MAMP-21-630x302.jpg

作成できました。

https://joppot.s3.amazonaws.com/wp-content/uploads/2014/03/MAMP-3-630x299.jpg

usersテーブルのレコードを確認する

usersテーブルには3つのレコードがあります。
それぞれ、createdの値が違います。

https://joppot.s3.amazonaws.com/wp-content/uploads/2014/03/MAMP-41-630x110.jpg

今回はaliceのデータをcreatedを照合して取得してみましょう。

年月日だけでデータを取得する

datetime型は年月日以外にも「時」「分」「秒」の値が一緒に入っているので、betweenを使って取得します。

一般式は次の様になります。

SELECT * FROM テーブル名 WHERE 
(datetime型かtimestanp型のカラム BETWEEN 
'年月日 00:00:00' AND '年月日 23:59:59')

となります。こうする事で、指定した日のデータが取得できます。

サンプルデータベースをもとに取得してみましょう。

aliceのデータを取得します。

SELECT * FROM users WHERE 
(created BETWEEN ' 2014-02-14 00:00:00' AND ' 2014-02-14 23:59:59')

MAMP 5

下の図を見ても分かる様に、aliceのデータが取得できました。

MAMP 6

まとめ

応用技として、数日間のデータも取得したりできます。うまくphpと連帯すれば、php側からも日にちを指定してデータを取得できます。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Twitterbootstrap3の開発環境構築とファイル配置、テンプレートを試す

概要 みなさんこんにちはcandleです。今回はtwitterbootstrap3のダウンロードを行い、ファイルを配置して、開発できる様に準備します。 twitterbootstrap3は最近リリース …

ruby on railsのckeditor gemの使い方をscaffoldを用いて解説する

概要 みなさんこんにちはcandleです。今回はruby on railsのckeditorという素晴らしいgemを使って見たいと思います。 ckeditorとはweb版の高機能なwordとかテキスト …

react nativeのandroidでfailed to find Build Tools revision 23.0.1エラーが出る時の対処

概要 みなさんこんにちは、candleです。今回はreact nativeでrun-androidでbuildが失敗する時の対処です。 私の場合最新のandroid-sdkを入れたところ、以下のような …

railsのrakeで作成したmigrationファイルとstatus履歴を削除する

概要 みなさんこんにちはcandleです。今回はrakeコマンドで作成したマイグレーションファイルの管理を紹介します。rakeコマンドを使っていると、よくよく考えれば必要の無いファイルがある。とか重複 …

ruby on railsのgemのインストールで不要なファイルをインストールしない設定

概要 みなさんこんにちはcandleです。私の記事はどうしても先人のプログラマーがまとめた内容を追試しているような感じになっていますが、これも重要なことなので、忘れないためにもまとめておきます。 ru …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー