joppot

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

プログラミング

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

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

Pocket

feli-21

概要

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

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

2014-03-23 10:23:41

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

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

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


前提

mysqlが自由に動かせる環境。
MAMPやXAMPがあると便利です。

SPONSORED LINK


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

下の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」を押します。

MAMP

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

作成できました。

MAMP 3

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

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

今回は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

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

関連記事

Mysqlテーブルの照合順序を変更する

概要 みなさんこんにちはcandleです。今回はテーブルの照合順序を変更する方法を行います。 この方法はやっても、mysqlクエリー1行ですみます。早速やりましょう。 テーブルの照合順序を変更する 次 …

railsのrakeで作成したカラムの型とdefault値を変更する方法

概要 みなさんこんにちはcandleです。今回はrakeコマンドのややこしいところを扱います。 rakeコマンドはわりと便利で、データベースのカラムの追加や型の変更をマイグレーションファイルから読み込 …

ruby on railsに最強のwysiwygエディタ、Squireを導入する

概要 みなさんこんにちはcandleです。今回はruby on railsにsquire editorを導入したいと思います。 squireはオープンソースの便利なwysiwygエディタです。 カスタ …

phpのsnappyで複数のwebサイトのサムネイルを保存する

概要 前回、snappyの基本的な使い方を試しました。 今回はsnappyを使って、あらかじめ、定義してある複数のwebサイトのサムネイルを保存してみたいと思います。 前提 composerがインスト …

fabricのsshのネットワーク設定でパスワードか公開鍵を使って認証する

概要 皆さん今日はcandleです。今回はsshを使ったfabricの設定をしましょう。 一般にsshにはパスワード認証と公開鍵認証があるので、そのどちらも試してみましょう。 もちろんセキュリティ面で …

  • English
  • 日本語

プロフィール


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

スポンサードリンク

アーカイブ