我一直在研究这个问题......我的目标是从开始日期开始返回所有日期,这些日期介于开始日期和结束日期之间,并且有一定的时间段作为因素.(难以解释)
例如…
开课日期:1987年11月20日; 结束日期:1988年1月1日; 期限:10天;
我想要这些日期:1987年11月20日; 1987年11月30日; 1987年12月10日; 1987年12月20日; 1987年12月30日;
我已经有一个日期表,所有日期都是1900年到2099年.期限可以是几天,几个月或几年.有任何想法吗?如果您需要更多信息,请告诉我.
MySQL的
几天使用DATEDIFF和模运算:
SELECT * FROM dates
WHERE `date` BETWEEN '1987-10-20' AND '1988-1-1'
AND DATEDIFF(`date`, '1987-10-20') % 10 = 0
Run Code Online (Sandbox Code Playgroud)
在10年的时间内,计算以模数表示的年份差异,并确保月份和日期相同:
SELECT * FROM dates
WHERE `date` BETWEEN '1980-10-20' AND '2000-10-20'
AND MONTH(date) = 10 AND DAY(date) = 20 AND (YEAR(date) - 1980) % 10 = 0
Run Code Online (Sandbox Code Playgroud)
以月为单位的时间段没有明确定义,因为月份的长度不同.什么比1月30日晚一个月?您可以将其用于某些特殊情况,例如"本月第一次".