我有一个数据库表,其中包含一个IP地址列表,每个IP地址带有一个datetime
列,从根本上来说,该示例类似于以下示例:
ip_address | date_first_viewed
192.122.42.2 2015-12-23 14:03:10
183.123.13.4 2015-12-23 02:11:10
193.311.31.6 2015-11-10 12:29:00
我正在尝试根据月,年对数据进行选择,计数和分组,因此它将显示为:
(2015, 12) 2
(2015, 11) 1
这是我当前正在使用的查询,尽管它不会返回任何日期?
$sql8 = "SELECT COUNT(ip_address) as count, EXTRACT(YEAR_MONTH FROM date_first_viewed) as date
FROM `all_website_stats`
GROUP BY EXTRACT(YEAR_MONTH FROM date_first_viewed)";
最佳答案
您的SQL看起来不错。只需使用反引号转义保留字count
和date
即可避免问题。要以所需的格式获取日期,您可以尝试以下查询,该查询只是将您想要格式化的其他字符串联在一起:SELECT CONCAT('(', YEAR(date_first_viewed), ', ', MONTH(date_first_viewed), ')') FROM table;
因此,对于您的示例:
SELECT COUNT(ip_address) as `count`, CONCAT('(', YEAR(date_first_viewed), ', ', MONTH(date_first_viewed), ')') as `date`
FROM `all_website_stats` GROUP BY CONCAT('(', YEAR(date_first_viewed), ', ', MONTH(date_first_viewed), ')')";
应该做到的!