查询本月新增注册用户数返回0,请求排查SQL语句问题
问题分析与修正
你的SQL语句存在三个关键问题,导致结果始终为0:
- 列名引用错误:用单引号包裹的
'date'会被SQL识别为字符串,而非表中的date列。month('date')实际是计算字符串"date"对应的月份,完全偏离了你要统计的注册日期。 - 函数调用语法错误:
current_date()本身是合法的日期函数,后面多出来的括号属于冗余写法,会导致语法错误或无法正确获取当前日期。 - 缺少年份判断:仅对比月份会把往年同月的注册数据也纳入范围,而你需要的是当前年份的本月数据,必须同时匹配年份条件。
修正后的SQL语句
select count(distinct id) from new_users where month(date) = month(current_date()) and year(date) = year(current_date());
如果你的数据库支持日期截断函数,还可以用更高效的范围匹配写法(能利用date列的索引):
-- MySQL/PostgreSQL 示例 select count(distinct id) from new_users where date >= date_trunc('month', current_date()) and date < date_trunc('month', current_date()) + interval '1 month';
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

