我需要选择两个给定日期(例如,11月10日和1月25日)之间的所有条目,而不考虑年份。
如果是1月25日和11月10日就好了。但是,如何构造查询以查找11月10日到1月25日之间的所有数据?

最佳答案

您可以使用MySQL的DAYOFYEAR()函数:

DAYOFYEAR(field) BETWEEN DAYOFYEAR(A) AND DAYOFYEAR(B)

如果DAYOFYEAR(A)>DAYOFYEAR(B)则应用程序需要用BETWEEN替换NOT BETWEEN或交换参数的顺序。如果需要在SQL中执行此操作:
DAYOFYEAR(field) BETWEEN
   LEAST(DAYOFYEAR(A), DAYOFYEAR(B)) AND GREATEST(DAYOFYEAR(A), DAYOFYEAR(B))

注意闰年,因为DAYOFYEAR()函数将考虑这些

09-25 15:18