在不查询表的情况下计算给定日期范围内星期日的出现次数

时间:2013-06-06 06:26:15

标签: mysql sql

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

1 个答案:

答案 0 :(得分:0)

是的,它是可行的。

假设您的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)