DATETIMEを「年-月-日」や「年-月-日 時」、「年-月-日 時:分」でGroup byする方法【SQL・備忘録】

SQL

1.環境と経緯

環境:WindowsServer、MariaDB

経緯:「年-月-日」「年-月-日 時」、「年-月-日 時:分」でGroup byをしてアクセス数の集計を行いたかったが、DATETIMEしかなく、てんやわんやしてしまった。

2.解決方法

2-1.年-月-日の場合

DATE(DATETIMEのカラム)を使用する。date_formatでもできるらしいが、いちいちフォーマットを指定するのも面倒くさいので。

SELECT COUNT(*), DATE(DATETIMEのカラム) FROM SAMPLE GROUP BY DATE(DATETIMEのカラム);

2-2.年-月-日 時の場合

date_format(DATETIMEのカラム, ‘%Y-%m-%d %H’)を使用する。

SELECT COUNT(*), date_format(DATETIMEのカラム, '%Y%m%d %H') FROM SAMPLE GROUP BY date_format(DATETIMEのカラム, '%Y%m%d %H');

2-3.年-月-日 時:分の場合

「そうか!date_format(DATETIMEのカラム, ‘%Y-%m-%d %H:%M’)だな!」と早とちりしたら違った。

date_format(DATETIMEのカラム, ‘%Y-%m-%d %H:%i’)を使用するみたい。iはどこからやってきた。

SELECT COUNT(*), date_format(DATETIMEのカラム, '%Y-%m-%d %H:%i') FROM SAMPLE GROUP BY date_format(DATETIMEのカラム, '%Y-%m-%d %H:%i');

3.参考サイト

その他の表現フォーマットは下記サイトをご覧ください。

DATE_FORMAT関数/TIME_FORMAT関数(日付または時刻を指定したフォーマットで整形する)
MySQL で DATE_FORMAT 関数を使用すると引数に指定した日付を表す値を指定のフォーマットで整形した文字列を取得することができます。また TIME_FORMAT 関数を使用すると時刻を表す値を指定のフォーマットで整形した文字列を取得することができます。ここでは MySQL における DATE_FORMAT ...

コメント

タイトルとURLをコピーしました