對於這個表:MySQL的GROUP BY年怪事
CREATE TABLE `items` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`type` char(15) DEFAULT NULL,
`ext_id` varchar(255) DEFAULT NULL,
`timestamp` int(11) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`txt` text,
`url` varchar(255) DEFAULT NULL,
`longitude` float(9,6) DEFAULT NULL,
`latitude` float(9,6) DEFAULT NULL,
`meta` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=41695 DEFAULT CHARSET=utf8;
有了數據,從2005年至2013年,所有的(INT)timestamp列,該查詢數據:
SELECT DATE_FORMAT(`timestamp`, '%Y') as 'year',
COUNT(id) as 'total'
FROM items
GROUP BY DATE_FORMAT(`timestamp`, '%Y')
返回此:
'year' => null
'COUNT(*)' => string '38710' (length=5)
'year' => string '2011' (length=4)
'COUNT(*)' => string '45' (length=2)
'year' => string '2012' (length=4)
'COUNT(*)' => string '67' (length=2)
'year' => string '2013' (length=4)
'COUNT(*)' => string '90' (length=2)
爲什麼我沒有得到正確的結果? 當我迭代SELECT * FROM items
時,我在打印<?php print date('Y-m-d H:i', $item->timestamp); ?>
時得到正確的日期,所以日期在那裏。
看看的選擇輸出*從項目,其中DATE_FORMAT('timestamp',「%Y」)爲空 – palindrom 2013-03-06 14:13:33
@palindrom - 嗯,是的,空的很多......但爲什麼呢?正如我所說,PHP可以從任何結果中獲取完整日期。 – 2013-03-06 14:16:39
@MichaelBerkowski - 好吧,不是一次全部.. – 2013-03-06 14:16:58