Date and Time
日付関数は便利~! 😎
MySQL の勉強は遅れてしまってるにゃ><
【環境】
MySQL:5.5.27, 5.5.38
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 は日付型のカラム名
例
- mysql> SELECT YEAR('1987-01-01');
- -> 1987
- mysql> SELECT MONTH('2008-02-03');
- -> 2
これを hoge テーブルに使うと
- mysql> SELECT YEAR(date) as year, num FROM hoge;
year | num |
---|---|
2014 | 3 |
2014 | 2 |
2015 | 6 |
これだと、だから? ってなっちゃうけど、集計を考えるとすぐわかる。
集計
年別の個数集計は、下記のように取れる。
- 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)
日付データをフォーマットして返す
- SELECT DISTINCT DATE_FORMAT( date, "%Y-%m" ) FROM table
これで date カラムのデータを YYYY-MM というフォーマットへ変換し
重複行を除いて取り出してくれる。
フォーマット指定方法については、マニュアル参照。
EXTRACT
MySQL:EXTRACT(unit FROM date)
EXTRACT():指定した部分だけ返す
YEAR なんかの複合型。
- mysql> SELECT EXTRACT(YEAR FROM '2009-07-02');
- -> 2009
- mysql> SELECT EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03');
- -> 200907
- mysql> SELECT EXTRACT(DAY_MINUTE FROM '2009-07-02 01:02:03');
- -> 20102
- mysql> SELECT EXTRACT(MICROSECOND
- -> FROM '2003-01-02 10:30:00.000123');
- -> 123
これもすごい~!
参考サイト
FLATZ:MySQLの知っていると便利な構文(その2)
→2007年の記事なのに、検索の2番目に出てきた。すごいね~。ありがとうございます!