MySQL选择两个日期之间的所有条目,而不考虑年份

MySQL选择两个日期之间的所有条目,而不考虑年份,mysql,sql,database,date,Mysql,Sql,Database,Date,我需要查找MySQL数据库中介于YYYY-10-30和YYYY-12-11之间的所有行。我不关心日期在哪一年,只关心介于这两个日期之间的行。您能试试吗?: SELECT * FROM yourTable WHERE (MONTH(yourDate) = 10 AND DAYOFMONTH(yourDate) >= 30) OR (MONTH(yourDate) = 11) OR (MONTH(yourDate) = 12 AND DAYOFMONTH(yourDate) <

我需要查找MySQL数据库中介于YYYY-10-30和YYYY-12-11之间的所有行。我不关心日期在哪一年,只关心介于这两个日期之间的行。

您能试试吗?:

SELECT *
FROM yourTable
WHERE (MONTH(yourDate) = 10 AND DAYOFMONTH(yourDate) >= 30)
   OR (MONTH(yourDate) = 11)
   OR (MONTH(yourDate) = 12 AND DAYOFMONTH(yourDate) <= 11)
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetByMonthAndDayRange`
(
    IN monthFrom INT
  , IN dayFrom INT
  , IN monthTo INT
  , IN dayTo INT
)
BEGIN

  -- For good coding practice, name your columns instead of using *
  SELECT *
  FROM tablename
  WHERE 
     (MONTH(datecolumnname) = monthFrom AND DAYOFMONTH(datecolumnname) >= dayFrom)
  OR (MONTH(datecolumnname) > monthFrom AND      MONTH(datecolumnname) <  monthTo)
  OR (MONTH(datecolumnname) = monthTo   AND DAYOFMONTH(datecolumnname) <= dayTo);

END

如果您使用存储过程,并且代码符合您的口味,您将能够更快地编写代码,只需以这种方式提供参数,它是动态的

好主意,但是使用查询中需要的其他内容,它就不起作用了。
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetByMonthAndDayRange`
(
    IN monthFrom INT
  , IN dayFrom INT
  , IN monthTo INT
  , IN dayTo INT
)
BEGIN

  -- For good coding practice, name your columns instead of using *
  SELECT *
  FROM tablename
  WHERE 
     (MONTH(datecolumnname) = monthFrom AND DAYOFMONTH(datecolumnname) >= dayFrom)
  OR (MONTH(datecolumnname) > monthFrom AND      MONTH(datecolumnname) <  monthTo)
  OR (MONTH(datecolumnname) = monthTo   AND DAYOFMONTH(datecolumnname) <= dayTo);

END