我的日期存储在我的MySQL数据库中。 (例如:1992-12-12,1983-01-02,1983-01-05,1983-01-10)
我想仅在日期和时间比较这些日期。无论多年,都以月为基础。
此外,我想检索日期介于 1月2日和 1月5日之间的记录,无论年份如何。
我该怎么做? 请帮助MySQL查询。
答案 0 :(得分:0)
首先创建一个函数来仅提取日期的日期和月份(我已经尽我所知写了,可能有比这更优化的方法):
CREATE FUNCTION daymonth (date DATE)
RETURNS DATE
RETURN STR_TO_DATE(CONCAT(CONCAT((EXTRACT(MONTH FROM date)),'-'),(EXTRACT(DAY FROM date))),'%m-%d');
然后在查询中调用该函数:
SELECT date
FROM ...
WHERE daymonth(date) BETWEEN daymonth('2011-01-02') AND daymonth('2011-01-05');
我想进一步讨论这个问题。 :) -Sandip
答案 1 :(得分:0)
此请求应该可以满足您的需求。但是由于第29届,这在2月之后不会完美地发挥作用
SELECT date
FROM ...
WHERE DAYOFYEAR(date) BETWEEN DAYOFYEAR('2011-01-02') AND DAYOFYEAR('2011-01-05');