我有一张周年纪念日的桌子.我想要一个查询,它会在接下来的10天内返回一系列纪念日.例如:
birthdate
---------
1965-10-10
1982-05-25
SELECT birthdate FROM Anniversaries WHERE mystical_magical_mumbo_jumbo <= 10
+------------+
| birthdate |
+------------+
| 1982-05-25 |
+------------+
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
我想在表单中保留查询x <= 10,因为我将在查询的其他部分使用该数字10,如果我将其设置为变量,我可以通过更改变量在任何地方更改它,而不是重写查询.
正如其他人所说,你需要忽略比较中的年份.DAYOFYEAR()函数是一种方法.
这是我头脑中的快速解决方案.它将在接下来的10天内返回所有生日,即使它是12月下旬和生日是明年.
它没有正确处理闰年,所以如果今年是闰年并且该人不是在闰年出生,反之亦然,那么3月初生日将会停止1天.闰年也将导致1月初的生日有时在12月下旬出现休息一天.如果有人想添加闰年修正,请随意:)
SELECT birthdate
FROM Anniversaries
WHERE dayofyear(birthdate) - dayofyear(curdate()) between 0 and 10
or dayofyear(birthdate) + 365 - dayofyear(curdate()) between 0 and 10;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |