2016-08-23 2 views
0

У меня есть таблица (посещаемость), в которой хранятся данные о посещаемости для сотрудников. Каждый день администратор входит в свою систему, выбирает дату (в эту дату) и отмечает сотрудника как настоящие или отсутствующие на эту дату. Эти записи хранятся в таблице посещаемости.Как выбрать записи, относящиеся к текущему месяцу

Я хочу получить все записи для определенного EmpId за текущий месяц, где посещаемость отмечена либо present/absent.

имена столбцов таблицы посещаемости являются:

1.EmpId - numeric 
2.date:date type 
3.status(either present/absent)-varchar 
  • Я хочу написать запрос для получения всех записей для конкретного EmpId (скажем, 1) в течение текущего месяца, где status="present"
  • Я хочу написать другой запрос для извлечения всех записей для конкретного EmpId (скажем, 1) за текущий месяц, где status="absent"

Любая помощь будет оценена по достоинству.

+1

Ничто не вам мешает. Пожалуйста, поделитесь тем, что вы пробовали до сих пор. – 1000111

ответ

0

Я попробовал этот запрос и он отлично работает:

select * from attendance 
where emp_id=1 and year(date)=year(curdate()) and month(date)=month(curdate()) and status='present'; 
+0

Каким образом «ваше» решение отличается от других? Немного несправедливо отмечать ваш ответ как принятый, если он совпадает с другими ранее предоставленными вами ответами. – Shadow

+0

@ shadow .. я новичок в stackoverflow..the решение точно такое же, как и предоставленное вами ... Я добавил ответ, чтобы вы знали, что запрос - это то, что я пробовал, и он отлично работает..i знаю, что я не должен был отмечать его как принятый .. будет держать это в виду отныне .. снова. –

0

Вы должны извлечь текущий месяц и дату из таблицы и получить результаты.

Используйте этот запрос для получения результата.

для извлечения нынешних студентов Alone

$query_one = "SELECT EmpId FROM `attendance` WHERE EXTRACT(YEAR FROM date)='".date('Y')."' AND EXTRACT(MONTH FROM date)='".date('m')."' AND `status`='present'"; 

для извлечения Отсутствующие Студенты Одних только

$query_two = "SELECT EmpId FROM `attendance` WHERE EXTRACT(YEAR FROM date)='".date('Y')."' AND EXTRACT(MONTH FROM date)='".date('m')."' AND `status`='absent'";  

Приведенный выше код будет извлекать все записи, соответствующие текущего месяца и год.

1

Вы можете использовать year() and month() функции, чтобы получить записи ФОМ текущий месяц:

select * from attendance 
where empid=... and year(date)=year(curdate()) and month(date)=month(curdate()) and status=... 

Вам необходимо предоставить идентификатор сотрудника и статус от вашего приложения.

+0

@ тень .. работает отлично .. –

+0

Если вышеизложенное помогло вам решить проблему, тогда PLS отметьте ответ как принятый, указав другим зрителям, что вопрос закрыт. – Shadow

0

Использование может использоваться только для достижения желаемого результата.

MONTH(DateColumn) = MONTH(GETDATE()) 
YEAR(DateColumn)= YEAR(GETDATE()) 
+0

И что произойдет, если у вас есть данные о посещаемости более 1 года? – Shadow

+0

@ Shadow, только что обновил код –

1

Попробуйте это:

Select * from attendance 
where date >= 'YOUR DATE' AND date <= 'YOUR DATE' AND status='Present OR Absent(Any)' 

ИЛИ Вы можете использовать это:

SELECT * FROM attendance 
WHERE Status='Present OR Absent(Any)' AND date BETWEEN value1 AND value2 
Смежные вопросы