我需要在MySQL数据库中查找介于"YYYY-10-30“和"YYYY-12-11”之间的所有行。我不关心日期在哪一年,只是在这两个日期之间。
发布于 2011-11-20 07:49:30
SELECT *
FROM yourTable
WHERE (MONTH(yourDate) = 10 AND DAYOFMONTH(yourDate) >= 30)
OR (MONTH(yourDate) = 11)
OR (MONTH(yourDate) = 12 AND DAYOFMONTH(yourDate) <= 11)发布于 2011-11-20 07:57:34
select *
from table
where
concat(year(now()),right(date_field,6))
between
concat(year(now()),'-10-30')
and
concat(year(now()),'-12-11')发布于 2011-11-20 08:06:24
你能试试这个吗?
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如果您使用存储过程(如果代码符合您的口味),您将能够更快地编写代码,只需提供参数(这种方式是动态的)
https://stackoverflow.com/questions/8198258
复制相似问题