mysql - 基于年和月的存储过程选择

标签 mysql sql select

我的查询遇到问题,我正在尝试根据输入的年份和月份显示数据。我在走廊那里,它显示输入的月份,但它会显示该特定月份的所有年份的数据。

         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'

最佳答案

使用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' 

关于mysql - 基于年和月的存储过程选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41652103/

相关文章:

php - 简化此 SQL 请求

SQL Server : alter column with fix value

sql - SQL 查询限制

mysql - 根据组从表中获取前 N 行

select - 如何选择 :last-child in d3. js?

Mysql内部查询获取金额总和

MySQL 使用 ODBC 驱动程序连接字符串

mysql - 如何改进存储过程查询

mysql - MySQL中haversine查询添加bounds的效率

select - Sparql 仅选择类的一个标签和注释