5.3. Datetime Functions (날짜 함수)
날짜 함수는 오라클 날짜에 대해 연산을 한다.
날짜 함수는 NUMBER형 값 또는 DATE형의 값을 RETURN 한다.
SYSDATE
SYSDATE 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.
최소단위 = 1초
SELECT
TO_CHAR(SYSDATE,
'RRRR-MM-DD HH24:MI:SS'
)
"지금시간"
FROM
DUAL ;
SELECT
TO_CHAR(SYSDATE-1,
'RRRR-MM-DD HH24:MI:SS'
)
"하루전지금시간"
FROM
DUAL ;
SELECT
TO_CHAR(SYSDATE-1/24,
'RRRR-MM-DD HH24:MI:SS'
)
"1시간전시간"
FROM
DUAL ;
SELECT
TO_CHAR(SYSDATE-1/24/60,
'RRRR-MM-DD HH24:MI:SS'
)
"1분전시간"
FROM
DUAL ;
SELECT
TO_CHAR(SYSDATE-1/24/60/10,
'RRRR-MM-DD HH24:MI:SS'
)
"6초전시간"
FROM
DUAL ;
SELECT
TO_CHAR(SYSDATE-(5/24 + 30/24/60 + 10/24/60/60),
'RRRR-MM-DD HH24:MI:SS'
)
"5시간 30분 10초전"
FROM
DUAL ;
SYSTIMESTAMP
SYSTIMESTAMP 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.
최소단위 = 10억분의 1초 (10의 9승)
-- SYSTIMESTAMP 예제
SELECT
TO_CHAR(SYSTIMESTAMP,
'RRRR-MM-DD HH24:MI:SS.FF3'
)
FROM
DUAL ;
SELECT
TO_CHAR(SYSTIMESTAMP,
'RRRR-MM-DD HH24:MI:SS.FF9'
)
FROM
DUAL ;
SELECT
TO_CHAR(SYSTIMESTAMP -1/24,
'RRRR-MM-DD HH24:MI:SS'
)
"1시간전시간"
FROM
DUAL ;
SELECT
TO_CHAR(SYSTIMESTAMP -1/24/60,
'RRRR-MM-DD HH24:MI:SS'
)
"1분전시간"
FROM
DUAL ;
ADD_MONTHS(a, b)
ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 한다.
-- SYSDATE를 이용한 예제
SELECT
TO_CHAR(ADD_MONTHS(SYSDATE,3),
'RRRR-MM-DD'
)
"date"
FROM
DUAL;
-- TIMESTAMP를 이용한 예제
SELECT
TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,3),
'RRRR-MM-DD'
)
"date"
FROM
DUAL;
MONTHS_BETWEEN(a1, a2)
MONTHS_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 한다.
-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT
MONTHS_BETWEEN(TO_DATE(
'2010-06-05'
,
'RRRR-MM-DD'
),
TO_DATE(
'2010-05-01'
,
'RRRR-MM-DD'
))
"month"
FROM
DUAL;
-- 두 일자 사이에 일짜 수를 조회하는 예제
SELECT
TO_DATE(
'2010-06-05'
,
'RRRR-MM-DD'
) -
TO_DATE(
'2010-05-01'
,
'RRRR-MM-DD'
)
"Day"
FROM
DUAL;
LAST_DAY(d)
LAST_DAY 함수는 달의 마지막 날의 날짜를 반환 한다
-- LAST_DAY예제
SELECT
SYSDATE today, LAST_DAY(SYSDATE) lastday
FROM
DUAL;
TODAY LASTDAY
-------- --------
11/05/28 11/05/31
NEXT_DAY(d, c1)
NEXT_DAY는 돌아오는 명시된 요일의 일자를 반환한다.
요일은 1(일) ~ 7(토)로 입력하면 된다.
-- NEXT_DAY예제
SELECT
NEXT_DAY(SYSDATE, 4)
"Next Wednesday"
FROM
DUAL;
Next
Wed
--------
11/06/01
-- NEXT_DAY예제
SELECT
NEXT_DAY(TO_DATE(
'20110501'
,
'RRRRMMDD'
), 2)
"5월 첫째주 월요일"
FROM
DUAL;
5월 첫째
--------
11/05/02
ROUND(d[,F])
ROUND 함수는 F에 지정된 단위로 반올림 한다. F가 연도라면 연도 단위로 반올림 한다. F가 생략되면 날짜를 가장 가까운 날짜로 반올림한다.
-- ROUND예제
SELECT
TO_CHAR(ROUND(TO_DATE(
'2011-09-11 21:00:01'
,
'RRRR-MM-DD HH24:MI:SS'
),
'YEAR'
),
'RRRR-MM-DD HH24:MI:SS'
)
FROM
DUAL;
SELECT
TO_CHAR(ROUND(TO_DATE(
'2011-09-11 21:00:01'
,
'RRRR-MM-DD HH24:MI:SS'
),
'MONTH'
),
'RRRR-MM-DD HH24:MI:SS'
)
FROM
DUAL;
SELECT
TO_CHAR(ROUND(TO_DATE(
'2011-09-11 21:00:01'
,
'RRRR-MM-DD HH24:MI:SS'
),
'DD'
),
'RRRR-MM-DD HH24:MI:SS'
)
FROM
DUAL;
SELECT
TO_CHAR(ROUND(TO_DATE(
'2011-09-11 21:00:01'
,
'RRRR-MM-DD HH24:MI:SS'
)),
'RRRR-MM-DD HH24:MI:SS'
)
FROM
DUAL;
-- 실행 결과
2012-01-01 00:00:00
2011-09-01 00:00:00
2011-09-12 00:00:00
2011-09-12 00:00:00
TRUNC(d[,F])
TRUNC 함수는 F에 지정된 단위로 절삭 한다
-- TRUNC예제
SELECT
TO_CHAR(TRUNC(TO_DATE(
'2011-09-11 21:00:01'
,
'RRRR-MM-DD HH24:MI:SS'
),
'YEAR'
),
'RRRR-MM-DD HH24:MI:SS'
)
FROM
DUAL;
SELECT
TO_CHAR(TRUNC(TO_DATE(
'2011-09-11 21:00:01'
,
'RRRR-MM-DD HH24:MI:SS'
),
MONTH
'),
'
RRRR-MM-DD HH24:MI:SS
')
FROM DUAL;
SELECT TO_CHAR(TRUNC(TO_DATE('
2011-09-11 21:00:01
',
'
RRRR-MM-DD HH24:MI:SS
'), '
DD
'),
'
RRRR-MM-DD HH24:MI:SS
')
FROM DUAL;
SELECT TO_CHAR(TRUNC(TO_DATE('
2011-09-11 21:00:01
',
'
RRRR-MM-DD HH24:MI:SS
')),
'
RRRR-MM-DD HH24:MI:SS')
FROM
DUAL;
-- 실행 결과
2011-01-01 00:00:00
2011-09-01 00:00:00
2011-09-11 00:00:00
2011-09-11 00:00:00
날짜에 대한 산술 연산
연 산 | 결과치 | 사용목적 |
---|---|---|
날짜 + 숫자 | 날짜 | 특정한 날로부터 며칠 후의 날짜 계산 |
날짜 - 숫자 | 날짜 | 특정한 날로부터 며칠 전의 날짜 계산 |
날짜 - 날짜 | 숫자 | 두 날짜 사이의 차이를 숫자로 계산 |
Oracle Datetime Functions
ADD_MONTHS
CURRENT_DATE
CURRENT_TIMESTAMP
DBTIMEZONE
EXTRACT (datetime)
FROM_TZ
LAST_DAY
LOCALTIMESTAMP
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
NUMTODSINTERVAL
NUMTOYMINTERVAL
ROUND (date)
SESSIONTIMEZONE
SYS_EXTRACT_UTC
SYSDATE
SYSTIMESTAMP
TO_CHAR (datetime)
TO_TIMESTAMP
TO_TIMESTAMP_TZ
TO_DSINTERVAL
TO_YMINTERVAL
TRUNC (date)
TZ_OFFSET
'Database > Oracle SQL' 카테고리의 다른 글
5.7. NVL, NVL2, NULLIF, COALESCE (0) | 2019.04.18 |
---|---|
5.6. DECODE와 CASE (0) | 2019.04.17 |
5.5. 기타 함수들 (0) | 2019.04.17 |
5.4. Conversion Functions (변환 함수) (0) | 2019.04.17 |
5.2. Character Functions (문자형 함수) (0) | 2019.04.17 |
5.1. Numeric Functions (숫자형 함수) (0) | 2019.04.17 |
4.6. Commit과 Rollback 예제 (0) | 2019.04.17 |
4.5. 트랜잭션(commit과 rollback) (0) | 2019.04.17 |