mysql根据两列获取两个日期之间的行

时间:2014-09-20 18:17:19

标签: mysql sql

我的表格有这样的结构

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

更新: 如果结婚日期和出生日期都在同一个人的提供日期范围内,则输出应包含两列人员

(抱歉我的英语不好)

1 个答案:

答案 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'