일단, 오라클 DB 를 예로 들면..
1. 24:00:00 이란 없고,
2. 00:00:00 은 어제가 아니라 오늘. 다만, 이 값이 표시된 일자를 따른다
상기 내용을 부연 설명하면..
2015-09-24 23:59:59 는 9/24 밤 11시 59분 59초다.
그렇다면 00:00:00 는..?
9/24 23시 59분 59초 다음의 0시 0분 0초는 9/24 이 아니라, 9/25 이다.
그래서 이렇게 표시된다, 2015-09-25 00:00:00.
결국, 오라클 DB에게 있어서 하루는..
00:00:00 부터 23:59:59 까지 있는 셈이다.
그런데, 23:59:59 는 천분의 일초 개념으로 다음 날 00:00:00 전에 존재하는 모든 밀리세컨드를 포함한다.
시간을 세분화 하여 어제와 오늘의 경계에 있는,
어제의 23:59:59 와 오늘의 00:00:00 사이에 숨어 있는 어떤 특정 시간은 모두 어제에 속한다.
어제의 23:59:59 와 오늘의 00:00:00 사이에 있는 수 많은 밀리 세컨드의 순간들은 모두 어제에 속한다.
웹서버도 DB서버도 모두 동일한 개념을 따진다고 볼 수 있다.
만약 date type 으로 ins_date 라는 칼럼이 있고 여기에 index 가 걸려 있어서 이를 사용해야 하는데,
일정 일자 범위를 세팅하려면(ins_date 에 function 을 입히면 인덱스를 타지 않는다)..
ins_date between trunc(sysdate) and trunc(sysdate+1) 이라 할 때, 논리 상의 문제가 발생할 수 있다.
물론, ins_date 에는 sysdate 값이 들어간다 하면 내일 일자가 없기 때문에 문제는 없다.
다만, 어제 일자 기준으로 데이타를 추출할 때가 문제가 되겠다..
ins_date between trunc(sysdate-1) and trunc(sysdate) 라고 하면 오늘 새벽 00:00:00 가 들어가니까 문제가 된다.
이 때에는, ins_date >= trunc(sysdate-1) and ins_date < trunc(sysdate) 라고 해야 하겠다..
.Fine.
'Server Oriented > DB-Oracle' 카테고리의 다른 글
몽고디비, mongo DB (0) | 2017.01.31 |
---|---|
오라클 주차, 오늘이 포함된 주차의 첫 날과 끝 날 (0) | 2015.11.13 |
통계 R (0) | 2015.09.09 |
오라클 like 검색시 * 나 _ 를 사용하는 경우 escape 키워드 사용 (1) | 2015.08.06 |
오렌지를 이용하여 DB 에서 특정 키워드가 사용된 모든 오브젝트 추출 (0) | 2015.07.14 |