我的表格有这样的结构
id | date_birth | date_marriage
1 | 1970-01-24 | 2000-05-14
2 | 1979-05-08 | 2008-08-12
如何在mysql中获取上述数据的两个日期之间的事件(日期比较与年份无关)。例如,如果start_date是2014-05-01,结束日期是2014-05-20,那么输出应该是
id | event
1 | married on 2000-05-14
2 | born on 1979-05-08
更新: 如果结婚日期和出生日期都在同一个人的提供日期范围内,则输出应包含两列人员
(抱歉我的英语不好)
答案 0 :(得分:1)
在回复您的评论时,如果使用union
日期匹配,则可以获得两行。
您可以通过转换为不包含年份的格式来检查日期而不管年份,例如%m%d
。请注意,格式应该是可排序的(最重要的数字首先),以便进行比较。
select *
from YourTable
where date_format(date_birth,'%m%d') between '0501' and '0520'
union all
select *
from YourTable
where date_format(date_marriage,'%m%d') between '0501' and '0520'