我想计算使用MySQL在给定日期范围内发生的星期日的数量...
我的问题是给定的日期不在表中...我只想让SQL在没有任何查询的情况下计算日期。例如:SELECT DATEDIFF(date1,date2);当然,不需要任何表来查询。
可能吗?

最佳答案

是的,有可能。

假设您的date1大于date2。

所以,

first_sunday = DATE_ADD(@date2, interval (8 - DAYOFWEEK(@date2)) mod 7 DAY)


是@ date2旁边的星期日,如果@ date2是星期日,则first_sunday是@ date2

last_sunday = DATE_ADD(@date1, interval 8 - DAYOFWEEK(@date1) DAY)


是@ date1旁边的星期日,即使@ date1是否是星期日,我们也不会计算last_sunday

sunday_count = FLOOR(DATEDIFF(last_sunday, first_sunday)/7)


将从date2到date1返回您的星期天金额。

如果只需要一个查询,就是这样:

SELECT FLOOR(DATEDIFF(DATE_ADD(@date1, interval 8 - DAYOFWEEK(@date1) DAY), DATE_ADD(@date2, interval (8 - DAYOFWEEK(@date2)) mod 7 DAY))/7)

关于mysql - 计算给定日期范围内星期日的发生而无需查询表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16955078/

10-10 07:50