개발 Q&A

제목 DB에서 현재시간 가져오기?
글쓴이 ci입문자 작성시각 2012/12/12 17:26:39
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 20682   RSS

DB에서 현재시간을 가져 오는 구문도 있을까요~?
어떠한 데이터가 DB에 저장 될 때 TIMESTAMP 값으로 시간값이 저장되는데,
현재 시간 값과 , 그 저장된 시간 값을 이용해서 두 시간의 차이좀 구해보려고 하거든요~

그런데, 현재 시간을 바로 받아올 수 있을까 ..? 하는 문제에 봉착했습니다.

DB에서 현재시간을 가져올 수 있는 방법이 있을까요?
 다음글 알고리즘 질문입니다. (3)
 이전글 리퍼러가 검출되지 않으면?? (4)

댓글

헛발이 / 2012/12/12 17:33:31 / 추천 0
$this->db->where('DATE_FORMAT(DATE_ADD(created, INTERVAL '.3.' DAY), "%Y%m%d") > ', 'DATE_FORMAT(now(), "%Y%m%d")', FALSE);

등등 이런식으로 하시면 됩니다..
ci입문자 / 2012/12/12 18:16:31 / 추천 0
헛발이//

문장을 봐도 이해가 안가네요 ㅠ
혹시  메뉴얼에 나와 있는건가요?
한대승(불의회상) / 2012/12/12 18:17:35 / 추천 0
현재시간과 기록된 타임스템브를 가져오고 싶다면..

$this->db->select('sysdate()', FALSE);
$this->db->select('컬럼이름');
$this->db->get('테이블명');
$this->db->where('조건');

하시면 됩니다.

MYSQL기준 이라는거 잊지마세요.. ^^

헛발이 / 2012/12/12 18:39:01 / 추천 0
ci입문자//

메뉴얼에 나와 있는건 아니구요~ 음.. 해석을 해 드리면..

$this->db->where('DATE_FORMAT(DATE_ADD(created, INTERVAL '.3.' DAY), "%Y%m%d") > ', 'DATE_FORMAT(now(), "%Y%m%d")', FALSE);

위의 문장을 쪼개서 널게 보면요..

$this->db->where('날짜필드 > ', '현재시간');
이렇게 비교 하는거죠...


앞부분의 날짜 필드의 'DATE_FORMAT(DATE_ADD(created, INTERVAL '.3.' DAY), "%Y%m%d") 를 다시 쪼개서 보면요..

created(임의)의 필드를 "%Y%m%d" 이런 형식으로 하되
DATE_ADD(created, INTERVAL '.3.' DAY) 즉 DB에 등록된 데이터에 3일을 더해서
%Y%m%d 이 형식으로 준비를 해 두고....


뒷부분의 현재 시간은 ..
DATE_FORMAT(now(), "%Y%m%d") 즉 현재 시간을 앞부분의 날짜필드와 동일 한 형식
즉 %Y%m%d 로 준비를 해서

> 한것을 가져와라 ... 이렇게 한거죠...

쿼리 문장에 따옴표 등이 있어서 마지막에 FALSE를 쥐서 코드이그나이터가 쿼리문을 변환 할때
"를 잘 처리 해달라고 FALSE 해 주는거구요...

이렇게 위의 문장을 행하면
데이터 중에 3일 이전에 데이터만 가져오는 쿼리 문장이 됩니다.
저는 게시판에서 새글 표시 할때 저렇게 하고 있습니다.

그리고 중간에 3일이라고 고정 시켰지만 그건 나중에 변수 처리 하시면 설정파일에서
맘대로 시간을 조정할 수 있구요~

설명이 되었는지 모르겠네요...