Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择日期范围内的重复日期,该日期范围可能有年份,也可能没有年份_Mysql_Date Range_Recurring Events - Fatal编程技术网

Mysql 选择日期范围内的重复日期,该日期范围可能有年份,也可能没有年份

Mysql 选择日期范围内的重复日期,该日期范围可能有年份,也可能没有年份,mysql,date-range,recurring-events,Mysql,Date Range,Recurring Events,我有一个用户表,上面有各种日期,如生日、雇佣日期和年度审核日期。生日可能有一年,也可能没有一年,雇佣日期有一年,审查日期没有一年 我希望返回一个跨日期范围的查询,该查询返回的行包含为这些重复事件的日期范围的年份计算的日期 例如: 具有以下功能的用户: dob:1980-05-05 doh:2005-06-22 review:0000-10-01 然后,如果我查询一个范围,比如2012-05-01到2013-12-01,我希望它返回如下记录: Event,Date dob,2012-

我有一个用户表,上面有各种日期,如生日、雇佣日期和年度审核日期。生日可能有一年,也可能没有一年,雇佣日期有一年,审查日期没有一年

我希望返回一个跨日期范围的查询,该查询返回的行包含为这些重复事件的日期范围的年份计算的日期

例如: 具有以下功能的用户:

dob:1980-05-05  
doh:2005-06-22  
review:0000-10-01
然后,如果我查询一个范围,比如2012-05-01到2013-12-01,我希望它返回如下记录:

Event,Date  
dob,2012-05-05  
doh,2012-06-22  
review,2012-10-01  
dob,2013-05-05  
doh,2013-06-22  
review:2013-10-01  
我意识到这可能会在每个日期字段的单独联合查询中完成,这很好。这与在未来查找日期x天不是完全相同的问题,因为我需要在给定日期范围内具有适当年份的重复日期,如果范围足够大,则可能超过多年


我只能考虑按程序来做这件事。首先检查开始和结束范围是否跨越一年。然后将日期分为开始日期到年底、开始日期到结束日期等,并为每个跨度运行查询。

如何表示查询中的范围?作为开始日期和结束日期?是的。用户将在应用程序中选择并提交开始和结束日期,如2012-05-01至2013-12-01。我在想这样的事情:选择stru_TO_DATECONCATYEAR@startyear,'-',MONTHdob,,'-',MONTHdob作为来自STR_TO的用户的dob_DATECONCATYEAR@startyear,“-”,MONTHdob,,“-”,MONTHdob介于@startyear和@endyear之间,但这取决于按如下方式处理开始/结束日期:2012-05-01-2012-12-31 2013-01-01-2013-12-01,并使用两个范围合并查询