powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с фильтрацией по дате и времени суток
3 сообщений из 3, страница 1 из 1
Запрос с фильтрацией по дате и времени суток
    #39020888
asdfv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос.
Есть поле calldate типа datetime в таблице cdr, как найти кол-во записей, calldate которых удовлетворяет двум требованиям:
1) все записи являются записями 1-го месяца 2015 года;
2) все записи находятся во временном интервале 8:00 - 21:00?
Т.е. все записи в таблице за январь, которые записаны с 8 утра до 9ти вечера.

Я так понимаю, что к запросу
Код: sql
1.
SELECT COUNT(calldate) FROM cdr WHERE calldate BETWEEN '2015-01-01 8:00:00' AND '2015-01-31 21:00:00'; 


нужно добавить AND и критерий по времени суток, но пока не могу разобраться как.

Как это сделать? И в какую степь лезть изучать?
...
Рейтинг: 0 / 0
Запрос с фильтрацией по дате и времени суток
    #39021365
asdfv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все оказалось еще проще, чем я думал:
Код: sql
1.
2.
3.
4.
SELECT COUNT(calldate) FROM cdr WHERE 
calldate BETWEEN '2015-01-01 8:00:00' AND '2015-01-31 21:00:00' and 
hour(calldate) >= 8 and 
hour(calldate) < 21;



Если есть другие варианты, особенно более быстродейственные, то интересно будет узнать.
...
Рейтинг: 0 / 0
Запрос с фильтрацией по дате и времени суток
    #39021703
asdfv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересное дополнение.
Понадобилось дополнительное условие, т.к. время работы организации по будним дням c 8-00 до 21-00 , а по выходным (сбб-вс) с 8-00 до 17-00 , то брать выборку за месяц с 8 до 21 - не корректно. Для этого пришлось уменьшить диапазон выборки в выходные дни при помощи оператора ветвления IF и функции возвращающей день недели WEEKDAY:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT COUNT(calldate) FROM cdr WHERE 
calldate BETWEEN '2015-01-01 8:00:00' and '2015-01-31 21:00:00' AND 
HOUR(calldate) >= 8 AND 
HOUR(calldate) <
(
	IF (
	(WEEKDAY(calldate) = 5) or (WEEKDAY (calldate) = 6),
	17, 21
	)
);
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с фильтрацией по дате и времени суток
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]