Oralce 에서 Trunc, Round 캡 처 날짜, 데이터 사용 방법 안내

3606 단어 데이터 뱅 크
Oracle SQL 문 구 를 먼저 봅 니 다.
select col_name
from tab_name
where col_time >= to_date(to_char(sysdate, 'YYYY-MM-DD'), 'YYYY-MM-DD')
    and col_time > to_date(to_char(sysdate, 'YYYY-MM-DD'), 'YYYY-MM-DD') + 1

방금 이 문 구 를 보고 나 는 웃 었 다. 이 형 제 는 무엇 을 하고 있 습 니까? 날 짜 를 먼저 문자열 로 바 꾼 다음 에 이 문자열 을 날짜 로 바 꾸 었 습 니까?
 
자세히 보 니 이 형 제 는 해 야 할 일이 있 었 습 니 다. 그날 의 기록 을 조회 하 는 것 은 그날 0 시 0 분 0 초부 터 기록 을 놓 치면 안 됩 니 다!
 
이 문 구 는 좀 길 어서 최적화 할 수 있 습 니 다. 구체 적 인 것 은 바로 Trunc 와 Round 입 니 다!
 
1. 숫자 를 매개 변수 로 한다.
Trunc (number [, 소수 자릿수]: 직접 캡 처 하고 반올림 등 작업 을 하지 않 습 니 다.
Round (number [, 소수 자릿수]: 캡 처 하 는 동시에 반올림 작업 을 합 니 다.
 
소수
몇 가지 예 를 들다.
// 89.98	89.99
select trunc(89.985, 2), round(89.985, 2) from dual;

// 89.9	90
select trunc(89.985, 1), round(89.985, 1) from dual;

// 89.9	89.9
select trunc(89.945, 1), round(89.945, 1) from dual;

// 89	90
select trunc(89.985, 0), round(89.985, 0) from dual;

// 89	90
select trunc(89.985), round(89.985) from dual;

// 80	90
select trunc(89.985, -1), round(89.985, -1) from dual;

// 0	100
select trunc(89.985, -2), round(89.985, -2) from dual;

 예 를 들 어 딱 봐 도 알 겠 어 요. JAVA 의 floor, round 와 몇 점 닮 았 어 요!!
 
2. 시간 작 루 파라미터
 
공식 홈 페이지 두 개:
http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions218.htm
 
http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions253.htm#i1002084
 
첫 번 째 홈 페이지 는 내 가 설명 하고 싶 은 것 은 용법 이 고, 두 번 째 홈 페이지 는 차이 점 이다.
 
Trunc(date[, fmt]), Round(date[, fmt])
 
형식 은 기본적으로 날짜, 즉 dd 입 니 다.
년, 월, 일, 시, 분, 초 없 음
 
Trunc 도 직접 캡 처 하여 높 은 곳 에 1 조작 을 추가 하지 않 습 니 다 (반올림 과 유사).
Round 는 1 을 추가 할 수 있 습 니 다. 땡:
    시간의 달 이 7 월 1 일 을 넘 으 면 연 1 을 추가 합 니 다.
    시간의 날 이 16 일 을 넘 으 면 월 에 1 을 추가 합 니 다.
    다른 건 안 넣 어.
 
아래 도 몇 가지 예 이다.
select trunc(to_date('20100715-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM'),
       round(to_date('20100715-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM')
from dual;
select trunc(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM'),
       round(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM')
from dual;
select trunc(to_date('20100616-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY'),
       round(to_date('20100616-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY')
from dual;
select trunc(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY'),
       round(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY')
from dual;

select trunc(sysdate,'yyyy'), round(sysdate, 'yyyy') from dual;
select trunc(sysdate,'mm'), round(sysdate,'mm') from dual;
select trunc(sysdate,'dd'), round(sysdate,'dd') from dual;
select trunc(sysdate,'HH24'), round(sysdate,'HH24') from dual;
select trunc(sysdate,'MI'), round(sysdate,'MI') from dual;

 
결과적으로 여러분 스스로 시험 해 보 세 요. 조건 은 제 가 모두 준 비 했 습 니 다. 운행 하면 됩 니 다. 여러분 도 그들 사이 의 차 이 를 진정 으로 이해 하 게 하 세 요!
 
시작
처음 SQL 을 다시 쓸 수 있 습 니 다.
 
to_date(to_char(sysdate, 'YYYY-MM-DD'), 'YYYY-MM-DD')
trunc (sysdate, DD) 일 수도 있 고, trunc (sysdate) 일 수도 있 습 니 다.
하지만 이 친구 의 의도 에 따라 라운드, 하하 하지 않 는 게 좋 을 것 같 아 요.
 
본문 끝 ~ ~ ~ ~ ~ ~ ~ ~

좋은 웹페이지 즐겨찾기