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