携帯 - コメント一覧 - 更新記録 - サイトマップ  

MA M&Aバンク » 開発者blog

icon HOME icon 会社案内 icon 冤罪を創る人々 icon 引かれ者の小唄 icon 経済事件ノート icon 山根治blog icon 開発者blog

MysqlのDATE_FORMAT関数をもっと早く知っていれば . はてなブックマーク  Twitter   2007-01-15

※以前別の場所で書いた文章を備忘的に書き記しておきます。

 売上を日時別に集計をする際、どうやってグループ化すればいいかちょっと悩んでいたところ、Mysqlのマニュアルを見た途端にあっさり解決。DATE_FORMAT関数を使って日付データを加工すればOKでした。
 
 備忘的に具体例を記載しておきます。(※日時を格納しているフィールド「time」の型はdatetime)
//【年別に集計】
SELECT id, DATE_FORMAT(time,'%Y年') as time1 FROM table1 GROUP BY time1

//【月別に集計】
SELECT id, DATE_FORMAT(time,'%Y年%m月') as time2 FROM table1 GROUP BY time2

//【日別に集計】
SELECT id, DATE_FORMAT(time,'%Y年%m月%d日') as time3 FROM table1 GROUP BY time3
 何が嬉しいかと言うと、日別・月別・年別にグループ化すると同時に、日時のフォーマットもやってくれるので、PHPの方でsscanfやmktime等を使っていちいち整形する必要がないことです。今までMysqlのデータについてPHPで日時のフォーマットをやっていましたが、今後はDATE_FORMATを使って一気にやってしまうと思います。
 参考までに月別集計のサンプルを残しておきます。(検証していないので間違っているかも)
<?php
$result = mysql_query("SELECT id, DATE_FORMAT(time,'%Y年%m月') as time2 FROM table1 GROUP BY time2");
echo '<table>
<tr>
<td>年月</td>
<td>id</td>
</tr>';
while($row = mysql_fetch_assoc($result)) {
echo '<tr>
<td>'.$row['time2']).'</td>
<td>'.$row['id']).'</td>
</tr>';
}
echo '</table>';
>
6.3.4. 日付と時刻関数
http://dev.mysql.com/doc/mysql/...

 また、上記ページには「DATE_ADD」「DATE_SUB」といった時間を足したり引いたりできる関数も載っています。10日締め、20日締め、25日締め、といったケースでも、「DATE_SUB」等をうまく使えば月別集計ができるような気がします。

 やはりマニュアルをよく読まなければいけませんね。

MysqlのDATE_FORMAT関数をもっと早く知っていれば (2007-01-15) . はてなブックマーク  Twitter  


関連するカテゴリー

前後のページ

このエントリーへのトラックバック

   [告知] ※トラックバックスパムが多いので、しばらくの間トラックバックの受付を停止いたします。(2006-08-08)


このエントリーへのコメント



Copyright©2004-2010 "M&A bank Co.,LTD". Powered by Nucleus CMS v3.41.