Date and Time

Posted by muchag | MySQL |
初回投稿:2015-02-12 (木) 21:50:26 | 最終更新:2015-02-14 (土) 1:08:28

日付関数は便利~! 😎
MySQL の勉強は遅れてしまってるにゃ><

【環境】
MySQL:5.5.27, 5.5.38

MySQL:12.7 Date and Time Functions
 
DATE, TIME, DATETIME, TIMESTAMP, YEAR 型のフィールドに対して使える関数。

YEAR, MONTH, DAY, DAYNAME

YEAR(date):年だけ返す
MONTH(date):月だけ返す
DAY(date):日だけ返す
DAYNAME(date):曜日だけ返す
※ date は日付型のカラム名
 

  1. mysql> SELECT YEAR('1987-01-01');
  2.         -> 1987
  3.  
  4. mysql> SELECT MONTH('2008-02-03');
  5.         -> 2

これを hoge テーブルに使うと

  1. mysql> SELECT YEAR(date) as year, num FROM hoge;
year num
2014 3
2014 2
2015 6

これだと、だから? ってなっちゃうけど、集計を考えるとすぐわかる。
 

集計

年別の個数集計は、下記のように取れる。

  1. mysql> SELECT YEAR(date) as year, SUM(num) FROM hoge GROUP BY YEAR(date);
year num
2014 5
2015 6

素敵~♪
 

DATE_FORMAT

MySQL:DATE_FORMAT(date,format)
日付データをフォーマットして返す

  1. SELECT DISTINCT DATE_FORMAT( date, "%Y-%m" ) FROM table

これで date カラムのデータを YYYY-MM というフォーマットへ変換し
重複行を除いて取り出してくれる。

フォーマット指定方法については、マニュアル参照。
 

EXTRACT

MySQL:EXTRACT(unit FROM date)
EXTRACT():指定した部分だけ返す

YEAR なんかの複合型。

  1. mysql> SELECT EXTRACT(YEAR FROM '2009-07-02');
  2.        -> 2009
  3. mysql> SELECT EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03');
  4.        -> 200907
  5. mysql> SELECT EXTRACT(DAY_MINUTE FROM '2009-07-02 01:02:03');
  6.        -> 20102
  7. mysql> SELECT EXTRACT(MICROSECOND
  8.     ->                FROM '2003-01-02 10:30:00.000123');
  9.         -> 123

これもすごい~!
 

参考サイト

FLATZ:MySQLの知っていると便利な構文(その2)
→2007年の記事なのに、検索の2番目に出てきた。すごいね~。ありがとうございます!

Posted by muchag | MySQL |
初回投稿:2015-02-12 (木) 21:50:26 | 最終更新:2015-02-14 (土) 1:08:28

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment