MySQLi" CURRENT_MONTH_BEGINNING" ...有没有办法解决这个问题?

时间:2015-06-18 08:39:29

标签: php date mysqli

我有兴趣使用MySQLi从数据库中收集上个月的数据。

但是每个月使用INTERVAL 1个月与另一个重叠,那么有没有办法告诉该功能检查我当前的月份,从第一天开始,并收集所述月份的所有数据?

类似的东西:

SELECT count(DISTINCT ip) AS visitor_ip FROM visitor_list
  WHERE visited_date > ( INTERVAL CURRENT_MONTH_BEGINNING)

2 个答案:

答案 0 :(得分:2)

您可以使用当前年份和月份,以及01作为日期:

SELECT count(DISTINCT ip) AS visitor_ip
FROM visitor_list
WHERE visited_date > CONCAT(DATE_FORMAT(NOW(),'%Y%m'), '01')

这样做的好处是visited_date上的任何索引仍然可以正确使用。

答案 1 :(得分:0)

首先,您需要从PHP生成当前月份的开始日期:

$monthStartDate = date('Y-m').'-01';

然后您的查询将变为:

$sql = "SELECT count(DISTINCT ip) AS visitor_ip FROM visitor_list WHERE visited_date > DATE_SUB(now(), interval (datediff(now(), '".$monthStartDate."')) day)";