2013-06-06 2 views
0

Я хочу подсчитать количество воскресений, происходящих в заданном диапазоне дат, используя MySQL ... Моя проблема - даты, приведенные не в таблице. .all, я хочу, чтобы SQL вычислил его без какого-либо запроса ... например: SELECT DATEDIFF (date1, date2); что, конечно, не требует каких-либо таблиц для запроса. Возможно ли это?Подсчет количества воскресений в заданном диапазоне дат без запроса таблицы

+3

Почему вы это делаете в базе данных на всех, если вы не доступ к любым данным? –

+0

Потому что я использую компанию CGI, которая использует sql и javascript ... –

ответ

0

Да, это возможно.

Предположим, что ваша дата1 больше даты2.

так,

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) 
+0

спасибо за это, отличная помощь для производительности. –

Смежные вопросы