选择具有日期的两列之间的记录,并忽略Year from date列

时间:2014-10-22 15:45:59

标签: mysql date datetime datediff

myTable with events看起来像这样:

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')也不起作用

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

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)) 之后,您需要撤销条件。

{{1}}

DEMO