提取订阅期内计费日期的总发生率MySQL
正在尝试查找帐单日期在整个订阅期内出现的时间提取订阅期内计费日期的总发生率MySQL,mysql,Mysql,正在尝试查找帐单日期在整个订阅期内出现的时间 例如,如果订阅期为2015年1月26日和2016年9月24日,则计费日期为每月27日。因此,查询应返回20作为完成的票据周期数 您需要使用MySQL数字生成器来生成日期序列 查询 SELECT COUNT(*) AS 'number of days' FROM ( SELECT '2015-01-26' + INTERVAL generator.number DAY AS date FROM ( SELECT
例如,如果订阅期为2015年1月26日和2016年9月24日,则计费日期为每月27日。因此,查询应返回20作为完成的票据周期数 您需要使用MySQL数字生成器来生成日期序列 查询
SELECT
COUNT(*) AS 'number of days'
FROM (
SELECT
'2015-01-26' + INTERVAL generator.number DAY AS date
FROM (
SELECT
(@number := @number + 1) AS number
FROM (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) AS record_1
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) AS record_2
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) AS record_3
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) AS record_4
CROSS JOIN ( SELECT @number := 0 ) AS init_user_param
) AS generator
) AS dates
WHERE
dates.date BETWEEN '2015-01-26' AND '2016-09-24'
AND
DAY(dates.date) = 27
结果
| number of days |
|----------------|
| 20 |
请参见演示什么?“要搜索/计算的日期是27,查询应返回20”,用简单的词表示您想在2015年1月26日至2016年9月24日的日期范围内计算第27天?2月29日怎么样?我的答案也应该可以处理闰年@TimBiegeleisen,因此主题发起者不必担心2月29日