CI 묻고 답하기

제목 특정 시간차가 나는 데이터만을 얻어오려 합니다.
카테고리 CIBOARD
글쓴이 릴리즈 작성시각 2018/03/13 11:33:27
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 17434   RSS

------------------------------------

Index : "1"

Name : "홍길동"

Time : "2018-02-09 13:40:00"

-----------------------------------

Index : "2"

Name : "고인돌"

Time : "2018-02-09 16:40:00"

-----------------------------------

.......

라고 할때, 궁금한 점이

Select 할때, 출입시간이 12시간 이상 초과된 사람의 명단을 알아 내려 합니다.

그래서 where절로 할려니까 조건을 어떻게 줘야 할지 잘 모르겠어서 질문을 드립니다.

$DB->select('

Emp.Idx,

Emp.Name,

Emp.WriteTime

');

$DB->from('EmpLog');

$DB->where('EmpLog.WriteTime','조건');

이렇게 되어야 하는데 

기록된 데이터에서 시간 차이 나는걸 구하는건 알겠는데 조건절에서 어떻게 줘야할지를 잘 모르겠네요 ㅠ

// $past_time = strtotime($result[1]->WriteTime);

// $current_time = date("Y-m-d H:i:s",time());

// $difference = $current_time - $past_time;

// $difference_min = $difference/60;

 다음글 [자답]config 또는 컨트롤러 안에 코드 inlcu... (3)
 이전글 db 에러 (2)

댓글

변종원(웅파) / 2018/03/13 11:44:26 / 추천 0

$DB->where('EmpLog.WriteTime > ', '조건');  이렇게 하십면 됩니다.

질문하시기전에 매뉴얼 읽어보세요. http://www.ciboard.co.kr/user_guide/kr/database/query_builder.html#looking-for-specific-data

릴리즈 / 2018/03/13 11:58:37 / 추천 0

네 그런데 저같은 경우는 저 조건이 

현재시간 - 각 행의 기록된 시간(Emp.WriteTime) > 12hours 이렇게 되는데 이렇게 조건을 줘도 되는지 해서요 ㅠ 

 

kaido / 2018/03/13 13:04:02 / 추천 0

일정 시간 안에서 12시간 이상 차이나는 시간을 가진 자료를 다시 조회하고 싶으신것 이신가요?

mysql  group by 와 having 구문을 확인해 보시면 될것 같습니다.

$DB->group_by();

$DB->having();

지원도 합니다.

 

액티브레코드가 어려우시면 우선 쿼리 편집기 에서 원하는 값을 한번 쿼리로 작성 하시고, 다시 액티브레코드로 넣는 방법을 몇번 반복 해보시면 금방 방법을 익힐수 있습니다.

변종원(웅파) / 2018/03/13 13:04:04 / 추천 0

mysql 시간함수 찾아보세요. 질문 하시는 내용들은 매뉴얼에 다 포함되어 있는 내용입니다. 

mysql함수 쓰기 힘드시면 php에서 시간 계산해서 쿼리 작성하시구요.

릴리즈 / 2018/03/14 09:21:26 / 추천 0

감사합니다 조건절을 제가 너무 어렵게 생각했습니다.

웅파님 말씀하신대로 부등호를 안에 넣고,

수식에서 'EmpLog.WriteTime >'를 제외한 부분을 다 조건으로 빼버리니까 결과가 출력됩니다.

kaido님 말씀하신 방법도 시도 하였습니다.

답변 감사드립니다.