如何计算列

时间:2017-04-20 15:09:00

标签: mysql function date stored-procedures range

我有一个问题,对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');

我真的很喜欢这里,如果有人通过存储过程或函数实现来帮助我,我将不胜感激。

0 个答案:

没有答案