包含事件的 myTable 如下所示:
id | from_date | to_date
1 | 2014-10-01 | 2015-02-20
2 | 2014-08-25 | 2015-04-01
from_date 和 to_date 是日期列 年份并不重要,因为所有事件每年都会在同一时间举行。例如每年 10-01 到 02-20 之间。
我想选择今天的所有事件,所以 10-22
我尝试使用 DayOfYear 但没有成功。
SELECT * FROM myTable WHERE DayOfYear('2014-10-22')
BETWEEN DayOfYear(`from_date`) AND DayOfYear(`to_date`)
BETWEEN 与 date_format(from_date,'%m%d') 也不起作用
任何帮助都会很棒!
最佳答案
当 to_date
位于 from_date
之后的下一年时,您需要反转条件。
SELECT *
FROM myTable
WHERE (YEAR(from_date) = YEAR(to_date)
AND DAYOFYEAR('2014-10-22') BETWEEN DAYOFYEAR(from_date) AND DAYOFYEAR(to_date))
OR
(YEAR(from_date) != YEAR(to_date)
AND DAYOFYEAR('2014-10-22') NOT BETWEEN DAYOFYEAR(to_date) AND DAYOFYEAR(from_date))
关于mysql - 选择带有日期的两列之间的记录并忽略日期列中的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26511579/