일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 야학
- for문
- 생활코딩
- stat
- 숫자야구
- 데이터분석
- list
- hadoop
- 루비페이퍼
- 리스트
- sql
- 하둡
- if문
- 데이터과학
- 빅데이터
- big_data
- 이토록 쉬운 통계&R
- 숫자야구코드
- 파이썬
- BigData
- code
- python
- DATABASE
- 함수
- 숫자야구소스
- 임경덕
- 데이터사이언스
- R
- 코딩야학
- DataAnalysis
Archives
- Today
- Total
yekang
날짜에 대한 ROUND, TRUNC 함수 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | -- 날짜에 대한 ROUND, TRUNC ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd hh24:mi:ss'; SELECT SYSDATE, ROUND(SYSDATE,'MONTH') , ROUND(SYSDATE,'year') FROM dual; SELECT last_name,hire_date,ROUND(hire_date,'YEAR') FROM employees; -- TRUNC 함수를 이용하여 1998년 3월에 입사한 사원들의 이름과 급여 -- 입사일을 출력해 보세요. SELECT last_name,salary,hire_date FROM employees WHERE TRUNC(hire_date,'MONTH')='1998-03-01 00:00:00'; --1998년에 입사한 사원들 SELECT last_name,salary,hire_date FROM employees WHERE TRUNC(hire_date,'YEAR')='1998-01-01'; | cs |
* truncate 원리 (날짜에서의)
TRUNC(hire_date,'MONTH')
1998-01-01 ~ 1998-01-31 이 1998-01-01 좌표에 점으로 mapping 되는 식이다.
* implicit VS explicit
implicit
- automatic
- performance 측면의 문제나 오류의 무작용 생길 수도 있다!
<발생하는 경우>
1. assignment
- T1의 c1(N)과 c2(C)열 존재한다고 할 때.
- c1에 '12345' 입력하려고 하면 숫자형으로 바꿔주려고 하고 c2에 12345 입력하면 문자형을 바꾸려 한다.
2. expressionevaluation
- salary + '100'
- 숫자 + 문자 => 1500!!!
- 숫자가 문자보다 세다.
- WHERE 절에서 C2=12345 조건을 걸어주면 옵티마이저가 C2를 TO_NUMBER(C2)해서 확인해준다.
- 인덱스를 못탄다는 문제가 생길 수 있다. (타입 변환이 되면)
explicit
- manual
- 정확한 동작을 지시하는데 이는 귀찮은 일이다.
'빅데이터 > SQL' 카테고리의 다른 글
동의어 SYNONYM (0) | 2018.01.04 |
---|---|
날짜 형식 모델의 요소 ,DECODE 함수, 그룹함수 중복, 조인, CRUD, insufficient privileges (0) | 2018.01.02 |
날짜 연산(INTERVAL type etc) (0) | 2017.12.29 |
단일행 함수 (문자형 & 숫자형&세션포맷) (0) | 2017.12.29 |
select문에서 집합의 흐름,패치,DML,DDL,DCL,TCL (0) | 2017.12.28 |