Rundevlog

小さい会社のしがないエンジニアのブログ

2024.1.6

DATETIMEを「年-月-日」や「年-月-日 時」、「年-月-日 時:分」でGroup byする方法【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.参考サイト

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

https://www.javadrive.jp/mysql/function/index49.html