URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6901
[ Назад ]

Исходное сообщение
"запрос select с датой и временем в условии"

Отправлено developer1 , 01-Ноя-07 13:51 
Всем привет!
Есть таблица регистрации входов/выходов с полями id_card и daterecord TimeStamp. Как написать запрос, выбирающий пришедших после 8:00? Мое решение для одного дня:
select id_card,min(daterecord) from accesslog
where date(daterecord)='2007-10-23' and time(daterecord)>='08:00:00' and time (daterecord)<='23:59:59'
and id_card not in
(select id_card from accesslog
where date(daterecord)='2007-10-23' and time(daterecord)>='00:00:00' and time (daterecord)<'07:59:59')
group by id_card
order by daterecord
Помогите написать запрос, выбирающий опоздавших за период, например, неделю? Может и мой запрос можно как-то написать по другому?
Заранее спасибо!

Содержание

Сообщения в этом обсуждении
"запрос select с датой и временем в условии"
Отправлено angra , 02-Ноя-07 08:39 
Не совсем понятно зачем вторая часть запроса если первый where уже выбирает нужное. А вообще удобней использовать between
select id_card,min(daterecord) from accesslog
where
(date(daterecord) between '2007-10-23' and '2007-10-30')
and
(time(daterecord) between '08:00:00' and '23:59:59')

"запрос select с датой и временем в условии"
Отправлено developer1 , 02-Ноя-07 08:49 
>Не совсем понятно зачем вторая часть запроса если первый where уже выбирает
>нужное.

Вторая часть запроса отсеивает тех, кто пришел до восьми, потом вышел и еще раз вошел позднее. Именно в этом и проблема.


"запрос select с датой и временем в условии"
Отправлено tux2002 , 03-Ноя-07 10:47 
select s1.card_id, s1.data, s1.begin_time, s2.end_time from
(select id_card id_card, date(daterecord) data, min (time(daterecord)) begin_time
from accesslog group by id_card, date(daterecord)) s1,
(select id_card id_card, date(daterecord) data, max (time(daterecord)) end_time
from accesslog group by id_card, date(daterecord)) s2 where s1.id_card=s2.id_card and s1.data=s2.data


Выборка по всем датам, сотрудникам, когда пришёл - когда ушёл. Из неё уже можете выбирать по другим условиям. Может ошибся, не проверял, не пинайте, Удачи


"запрос select с датой и временем в условии"
Отправлено tux2002 , 03-Ноя-07 11:03 
PS s1 и s2 можно сразу суэить до интересующего диапазона дат.

"запрос select с датой и временем в условии"
Отправлено developer1 , 06-Ноя-07 13:38 
Все работает! Большое спасибо!!!