티스토리 뷰
반응형
---- 날자 계산하기 ----
-- 오늘날자 (현재날자 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate,'dd') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 내일날자 (다음날자 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate,'dd') + 1,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 내일날자 (다음날자 현재시 현재분 현재초 ...)
SELECT to_char(sysdate + 1 ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
---- 달 계산하기 ----
-- 이번달 시작날자(현재달 1일 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate,'mm') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 이번달 시작날자(현재달 1일 현재시 현재분 현재초 ...)
SELECT to_char(sysdate - TO_CHAR(SYSDATE, 'dd') + 1 ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 다음달 시작날자(다음달 1일 0시 0분 0초 ...)
SELECT to_char(trunc(add_months(sysdate, + 1),'mm') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 다음달 시작날자(다음달 1일 현재시 현재분 현재초 ...)
SELECT to_char(add_months(sysdate, 1) - to_char(add_months(sysdate, 1), 'dd') + 1,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 다음달 오늘 날자(다음달 현재일 현재시 현재분 현재초 ...)
SELECT to_char(add_months(sysdate, 1) ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
---- 년 계산하기 ----
-- 올해 시작날자(올해 1월 1일 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate, 'yyyy') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 1년전 현재일자(전년 현재달 현재일 0시 0분 0초 ...)
SELECT to_char(trunc(add_months(sysdate, -12), 'dd'),'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 1년전 현재일자(전년 현재달 현재일 현재시 현재분 현재초 ...)
SELECT to_char(add_months(sysdate, -12),'yyyy/mm/dd hh24:mi:ss') FROM dual ;
---- 참고사항 ----
-- TO_CHAR : 숫자나 날짜를 문자열로 변환
-- TO_NUMBER : 문자를 숫자로 변환
-- TO_DATE : 문자를 날짜로 변환
SELECT sysdate() -1 FROM dual; -- 현재시간 - 1일
SELECT sysdate() -1/24 FROM dual; -- 현재시간 - 1시간
SELECT sysdate() -1/24/60 FROM dual; -- 현재시간 - 1분
SELECT sysdate() -1/24/60/60 FROM dual; -- 현재시간 - 1초
-- YYYY : 4자리 연도로 표시
-- YY : 끝의 2자리 연도로 표시
-- YEAR : 연도를 알파벳으로 표시
-- MM : 달을 숫자로 표시
-- MON : 달을 알파벳 약어 로표시
-- MONTH : 달을 알파벳으로 표시
-- DD : 일자를 숫자로 표시
-- DAY : 일에 해당하는 요일
-- DY : 일에 해당하는 요일의 약어
-- HH : 12시간으로 표시(1-12)
-- HH24 : 24시간으로 표시(0-23)
-- MI : 분을 표시
-- SS : 초를 표시
-- AM, PM : 오전인지 오후인지를 표시
---- 기초 날자구하기 ----
-- SYSDATE : 현재 시스템의 날짜 및 시간을 구함
SELECT sysdate FROM dual;
-- LAST_DAY : 지정한 날짜의 해당 월의 마지막 날짜를 구함
SELECT last_day(sysdate) FROM dual;
-------------------------------------------------------------------------------
-- 두 날자 사이의 차이 (1번째 인자가 2번째인자보다 작으면 음수, 크면 양수)
-- 날자를 구할때 날자이후 데이터 까지 있다면 계산이 시간단위까지 계산하는듯하다
-- 그래서 날자까지만 변환해서 잘라줘야 한다.
SELECT to_date(to_char(to_date('20120220042517','yyyymmddhh24miss'), 'yyyymmdd'), 'yyyymmdd') - to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd') FROM dual;
-------------------------------------------------------------------------------
-- MONTHS_BETWEEN : 두달 사이의 개월 차이 (1번째 인자가 2번째인자보다 작으면 음수, 크면 양수)
SELECT MONTHS_BETWEEN(to_date('20120219','yyyymmdd'), sysdate) FROM dual;
-- ADD_MONTHS : 현재달로부터 지정한 달의 날자를 구함 (즉 1달뒤 2달뒤 등의 날자를 구함)
SELECT add_months(sysdate, -3) FROM dual;
-- ROUND : 날짜에 대한 반올림 (12시이후(12:00 00초포함)면 1일을 더함)
SELECT round(sysdate) FROM dual;
SELECT round(to_date('20110221120000', 'yyyymmddhh24miss')) FROM dual;
-- TRUNC : 날짜에 대한 버림
SELECT trunc(sysdate) FROM dual;
---- TO_CHAR 의 변환 형식들 ----
-- 9 : 일반적인 숫자를 나타냄
SELECT to_char('123', '999999') FROM dual;
-- 0 : 앞의 빈자리를 0으로 채움
SELECT to_char('123', '000000') FROM dual;
-- $ : dollar를 표시함
SELECT to_char('123', '$999999') FROM dual;
-- L : 지역 통화 단위(ex \)
SELECT to_char('123', 'L999999') FROM dual;
-- . : 소숫점을 표시함
SELECT to_char('123', '999.999') FROM dual;
SELECT to_char('12.3', '999.999') FROM dual;
-- , : 천단위를 표시함
SELECT to_char('12345', '999,999,999') FROM dual;
-- 오늘날자 (현재날자 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate,'dd') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 내일날자 (다음날자 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate,'dd') + 1,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 내일날자 (다음날자 현재시 현재분 현재초 ...)
SELECT to_char(sysdate + 1 ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
---- 달 계산하기 ----
-- 이번달 시작날자(현재달 1일 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate,'mm') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 이번달 시작날자(현재달 1일 현재시 현재분 현재초 ...)
SELECT to_char(sysdate - TO_CHAR(SYSDATE, 'dd') + 1 ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 다음달 시작날자(다음달 1일 0시 0분 0초 ...)
SELECT to_char(trunc(add_months(sysdate, + 1),'mm') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 다음달 시작날자(다음달 1일 현재시 현재분 현재초 ...)
SELECT to_char(add_months(sysdate, 1) - to_char(add_months(sysdate, 1), 'dd') + 1,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 다음달 오늘 날자(다음달 현재일 현재시 현재분 현재초 ...)
SELECT to_char(add_months(sysdate, 1) ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
---- 년 계산하기 ----
-- 올해 시작날자(올해 1월 1일 0시 0분 0초 ...)
SELECT to_char(trunc(sysdate, 'yyyy') ,'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 1년전 현재일자(전년 현재달 현재일 0시 0분 0초 ...)
SELECT to_char(trunc(add_months(sysdate, -12), 'dd'),'yyyy/mm/dd hh24:mi:ss') FROM dual ;
-- 1년전 현재일자(전년 현재달 현재일 현재시 현재분 현재초 ...)
SELECT to_char(add_months(sysdate, -12),'yyyy/mm/dd hh24:mi:ss') FROM dual ;
---- 참고사항 ----
-- TO_CHAR : 숫자나 날짜를 문자열로 변환
-- TO_NUMBER : 문자를 숫자로 변환
-- TO_DATE : 문자를 날짜로 변환
SELECT sysdate() -1 FROM dual; -- 현재시간 - 1일
SELECT sysdate() -1/24 FROM dual; -- 현재시간 - 1시간
SELECT sysdate() -1/24/60 FROM dual; -- 현재시간 - 1분
SELECT sysdate() -1/24/60/60 FROM dual; -- 현재시간 - 1초
-- YYYY : 4자리 연도로 표시
-- YY : 끝의 2자리 연도로 표시
-- YEAR : 연도를 알파벳으로 표시
-- MM : 달을 숫자로 표시
-- MON : 달을 알파벳 약어 로표시
-- MONTH : 달을 알파벳으로 표시
-- DD : 일자를 숫자로 표시
-- DAY : 일에 해당하는 요일
-- DY : 일에 해당하는 요일의 약어
-- HH : 12시간으로 표시(1-12)
-- HH24 : 24시간으로 표시(0-23)
-- MI : 분을 표시
-- SS : 초를 표시
-- AM, PM : 오전인지 오후인지를 표시
---- 기초 날자구하기 ----
-- SYSDATE : 현재 시스템의 날짜 및 시간을 구함
SELECT sysdate FROM dual;
-- LAST_DAY : 지정한 날짜의 해당 월의 마지막 날짜를 구함
SELECT last_day(sysdate) FROM dual;
-------------------------------------------------------------------------------
-- 두 날자 사이의 차이 (1번째 인자가 2번째인자보다 작으면 음수, 크면 양수)
-- 날자를 구할때 날자이후 데이터 까지 있다면 계산이 시간단위까지 계산하는듯하다
-- 그래서 날자까지만 변환해서 잘라줘야 한다.
SELECT to_date(to_char(to_date('20120220042517','yyyymmddhh24miss'), 'yyyymmdd'), 'yyyymmdd') - to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd') FROM dual;
-------------------------------------------------------------------------------
-- MONTHS_BETWEEN : 두달 사이의 개월 차이 (1번째 인자가 2번째인자보다 작으면 음수, 크면 양수)
SELECT MONTHS_BETWEEN(to_date('20120219','yyyymmdd'), sysdate) FROM dual;
-- ADD_MONTHS : 현재달로부터 지정한 달의 날자를 구함 (즉 1달뒤 2달뒤 등의 날자를 구함)
SELECT add_months(sysdate, -3) FROM dual;
-- ROUND : 날짜에 대한 반올림 (12시이후(12:00 00초포함)면 1일을 더함)
SELECT round(sysdate) FROM dual;
SELECT round(to_date('20110221120000', 'yyyymmddhh24miss')) FROM dual;
-- TRUNC : 날짜에 대한 버림
SELECT trunc(sysdate) FROM dual;
---- TO_CHAR 의 변환 형식들 ----
-- 9 : 일반적인 숫자를 나타냄
SELECT to_char('123', '999999') FROM dual;
-- 0 : 앞의 빈자리를 0으로 채움
SELECT to_char('123', '000000') FROM dual;
-- $ : dollar를 표시함
SELECT to_char('123', '$999999') FROM dual;
-- L : 지역 통화 단위(ex \)
SELECT to_char('123', 'L999999') FROM dual;
-- . : 소숫점을 표시함
SELECT to_char('123', '999.999') FROM dual;
SELECT to_char('12.3', '999.999') FROM dual;
-- , : 천단위를 표시함
SELECT to_char('12345', '999,999,999') FROM dual;
반응형
'Database' 카테고리의 다른 글
[ORACLE]각각 다른 컬럼업데이트시 다른 테이블 업데이트 TRIGGER (0) | 2014.09.26 |
---|---|
[ORACLE] 여러 로우 값을 하나의 컬럼으로 바꾸는 방법 (0) | 2014.09.24 |
[ORACLE] 없는 데이터 강제로 만들기 (0) | 2014.09.16 |
[ORACLE] 오라클 재구동 (0) | 2014.08.13 |
[MSSQL]MSSQL 2005 유지관리 계획 등록 오류 (0) | 2013.07.10 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Shell
- 파일
- mssql
- 윈도우
- 자동차
- Linux
- 서버
- 백업
- 오라클
- DB
- 데이터
- 설정
- server
- delete
- tomcat
- Toad
- 테이블
- java
- select
- DATABASE
- 리눅스
- sql
- eclipse
- MySQL
- user
- IP
- Windows
- Oracle
- table
- apache
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함