根据年份和月份选择存储过程

问题描述:

我遇到了我的查询问题,我试图根据输入的年份和月份显示数据。我在这里走廊里显示了进入月份的情况,但它显示了这个特定月份所有年份的数据。根据年份和月份选择存储过程

  PROCEDURE `date_passed`(in date date) 
     BEGIN 
     SELECT table1.name, table1.licence, table2.date 
     FROM table1 
    inner join table2 
    on 
    table2.table1_idtable1 = table1.idtable1 
    where MONTH (date)= MONTH(date) 
    and 
    result='passed' 
+0

这是因为你的代码没有做任何事情。 –

+0

我没有尝试沿着prdp的第一个答案,并没有奏效。 –

使用YEAR功能来过滤年份部分从日期

SELECT table1.NAME, 
     table1.licence, 
     table2.date 
FROM table1 
     INNER JOIN table2 
       ON table2.table1_idtable1 = table1.idtable1 
WHERE Month (date) = Month(input_date) 
     AND Year(date) = Year(input_date) 
     AND result = 'passed' 

一些日期函数更好的方法。它将使用日期列上的索引(如果有的话)。

SELECT table1.NAME, 
     table1.licence, 
     table2.date 
FROM table1 
     INNER JOIN table2 
       ON table2.table1_idtable1 = table1.idtable1 
WHERE date >= cast(Date_format(input_date, '%Y-%m-01') as date) 
     AND date < DATE_ADD(cast(Last_day(input_date) as date),INTERVAL 1 DAY) 
     AND result = 'passed' 
+0

@DanBracuk即使我不是一个Mysql用户,我只是有了这个想法,并用它来获得相关的功能。我认为我解决了这两个问题 –

+0

不幸的是,这些都没有工作:(。我没有尝试一些沿着你的第一个答案,然后才来到这里,谢谢你的帮助 –

+0

@ChristopherInfinity - 你没有工作是什么意思?你得到任何错误如果你没有得到预期的结果,然后添加样本数据和预期结果 –