Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在多个日期上运行复杂的查询_Mysql - Fatal编程技术网

Mysql 在多个日期上运行复杂的查询

Mysql 在多个日期上运行复杂的查询,mysql,Mysql,我有以下查询以获取每月用户数量: SELECT count(user_id) from subs where (started_at between @start_date and @start_date + interval 1 month or (expires_at>@start_date + interval 1 month and started_at<@start_date)) 从SUB中选择计数(用户id) 式中(从@start_日期到@start_日期+间隔1个月开

我有以下查询以获取每月用户数量:

SELECT count(user_id) from subs
where (started_at between @start_date and @start_date + interval 1 month
or (expires_at>@start_date + interval 1 month and started_at<@start_date))
从SUB中选择计数(用户id)
式中(从@start_日期到@start_日期+间隔1个月开始)

或者(过期时间为>@start\u date+间隔1个月,开始时间为您希望按
年和月进行分组


假设您的
started\u at
列为日期类型,您可以使用
GROUP\u按年份(started\u at)、月份(started\u at)
,或者也可以使用
DATE\u FORMAT
将列值格式化为单字符串值,格式为YYYY-MM,并按其分组。也可以选择与列相同的值,以获得所需的正确标识符。

您可能需要类似的内容:

SELECT YEAR(started_at) as 'Year',
MONTH(started_at) as 'Month',
COUNT(user_id) as 'Users'
FROM subs
GROUP BY YEAR(started_at),MONTH(started_at);

请注意,如果一个月没有用户,此查询将不会返回该月的条目。如果您还想包括用户为0的月份,则需要更复杂的查询;请检查更多信息。

似乎您没有收到我的消息:我想运行查询(开始日期和开始日期之间+间隔1个月或更长时间)(过期时间>开始日期+间隔1个月,我与CBroe在这一方面合作。你应该添加他提到的信息,以便我们准确了解你想要什么。如果你无法共享数据库中的数据,请提供一个虚拟样本和预期结果。似乎你没有得到我:我想运行查询(从开始日期到开始日期+间隔1个月或(过期日期>开始日期+间隔1个月)到开始日期如果这里有多人似乎不理解你,那么到目前为止,你的解释可能会有问题。请编辑你的问题,并包括表结构、示例数据和预期结果。