我有一个数据库表,其中包含一个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看起来不错。只需使用反引号转义保留字countdate即可避免问题。要以所需的格式获取日期,您可以尝试以下查询,该查询只是将您想要格式化的其他字符串联在一起:

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), ')')";


应该做到的!

07-24 19:01
查看更多