我有一个问题,对SO的15分钟搜索无法得到答案。我有一个名为bugs的数据库,用于存储我们正在开发的系统中的错误信息。重要的列是open_date,close_date和引入的错误严重性的状态。我需要创建一个SQL语句来显示输入日期范围内每个日期的已计数已打开错误的数量。如果在“2012-01-01”上创建了一个错误,则认为该错误是在或上创建的 在“2012-01-01”之前(即同一天),在“2012-01-02”之后或之后(即该日期后的第二天)结束。
我已经创建了一个sql来查找需求的单元功能:
SELECT COUNT(DATE(Open_Date)) BugsOpen
, DATE(Open_Date) Dated
FROM bugs
WHERE DATE(open_date) <= (STR_TO_DATE('21/10/17','%d/%m/%Y'))
AND DATE(close_date) >= (DATE_ADD(STR_TO_DATE('21/10/17','%d/%m/%Y'),INTERVAL 1 DAY))
OR close_date IS NULL);
哪个有效,但我需要这个函数调用或存储过程调用,例如。 showBugs('21 / 10/17 - 29/10/17'),显示此函数/过程中输入范围中的每个日期。
我找到了一种从日期中提取的方法。
选择SUBSTRING('21 / 10/17 - 29/10/17', - 19,8)作为from_date, SUBSTRING('21 / 10/17 - 29/10/17'from 12)as to_date;
但是我在编写一个简单的程序时遇到了麻烦。我已经开始编写一些代码了:
删除程序如果存在showBugs; CREATE DEFINER ='root'@'localhost'PROCEDURE showBugs(rangeOfDates TEXT)
BEGIN
SET @from_date = SUBSTRING(rangeOfDates,-19,8); SET @to_date = SUBSTRING(rangeOfDates FROM 12);
REPEAT SET @from_date
END REPEAT;
END; 致电showBugs('21 / 10/17 - 29/10/17');
我真的很喜欢这里,如果有人通过存储过程或函数实现来帮助我,我将不胜感激。