Ada kondisi dimana Anda ingin mengambil jumlah
row per tanggal, sementara tanggal disini adalam kolom
timestamp ( mysql
timestamp, bukan unix
timestamp ).
Hal ini mungkin menyulitkan mengingat
timestamp akan menyimpan tahun sampai
milisecond.
Sebagai contoh saya memiliki tabel seperti ini :
mysql> SELECT `sid`, `sdate` FROM `t_stats`;
+-----+---------------------+
| sid | sdate |
+-----+---------------------+
| 1 | 2011-10-10 16:24:53 |
| 2 | 2011-10-10 16:25:39 |
| 3 | 2011-10-10 16:28:05 |
| 4 | 2011-10-10 16:30:14 |
| 5 | 2011-10-10 16:30:34 |
| 6 | 2011-10-10 16:32:19 |
| 7 | 2011-10-10 16:33:05 |
| 8 | 2011-10-10 16:36:33 |
| 9 | 2011-10-10 16:38:13 |
| 10 | 2011-10-10 16:44:05 |
| ... | ... |
+-----+---------------------+
165764 rows in set (0.00 sec)
Untuk dapat menghitung jumlah
row pada tanggal, bulan, dan tahun yang sama, Anda bisa menggunakan bentuk
query seperti ini :
SELECT COUNT(*) AS `count`, DATE_FORMAT(sdate, '%Y-%m-%d') AS `the_date`
FROM `t_stats` GROUP BY `the_date`;
Sehingga akan menghasilkan bentuk tabel seperti ini :
mysql> SELECT COUNT(*) AS `count`, DATE_FORMAT(sdate, '%Y-%m-%d') AS `the_date`
FROM `t_stats` GROUP BY `the_date`;
+-------+------------+
| count | the_date |
+-------+------------+
| 73 | 2011-10-10 |
| 12 | 2011-10-11 |
| 18 | 2011-10-13 |
| 2 | 2011-10-14 |
| 23 | 2011-10-16 |
| 109 | 2011-10-17 |
| 61 | 2011-10-18 |
| 1171 | 2011-10-19 |
| 984 | 2011-10-20 |
| 912 | 2011-10-21 |
| ... | ... |
+-------+------------+
129 rows in set (0.28 sec)
Begitu juga dengan bulan, dan tahun :
Untuk
group berdasarkan bulan, bisa dengan bentuk
query :
SELECT COUNT(*) AS `count`, DATE_FORMAT(sdate, '%Y-%m') AS `the_month`
FROM `t_stats` GROUP BY `the_month`;
Untuk
group berdasarkan tahun, bisa dengan bentuk
query :
SELECT COUNT(*) AS `count`, DATE_FORMAT(sdate, '%Y') AS `the_year`
FROM `t_stats` GROUP BY `the_year`;