ALTER SESSION SET time_zone = '-5:00' ;
ALTER SESSION SET TIME_ZONE = 'America/New_York';
SYSDATE
: 서버가 위치하고 있는 곳의 날짜와 시간을 보여줌
만약 내가 있는 위치가 서버의 위치와 다르다면, CURRENT_DATE, CURRENT_TIMESTAMP 및 LOCALTIMESTAMP
를 이용
CURRENT_DATE
- 유저 세션의 현재 날짜 반환
- DATE 데이터 유형
CURRENT_TIMESTAMP
- 유저 세션의 현재 날짜와 시간 반환
- TIMESTAMP WITH TIME ZONE 데이터 유형
LOCALTIMESTAMP
- 유저 세션의 현재 날짜와 시간 반환
- TIMESTAMP 데이터 유형
SELECT *
FROM nls_session_parameters
WHERE parameter LIKE '%FORMAT' ;
ALTER SESSION SET nls_date_format = 'YYYY/MM/DD HH24:MI:SS' ;
ALTER SESSION SET nls_timestamp_format = 'YYYY/MM/DD HH24:MI:SSXFF' ;
ALTER SESSION SET nls_timestamp_tz_format = 'YYYY/MM/DD HH24:MI:SSXFF TZR' ;
-- Asia/Seoul
SELECT sessiontimezone
FROM dual ;
ALTER SESSION SET time_zone = '-5:00' ;
ALTER SESSION SET TIME_ZONE = 'America/New_York';
-- America/New_York
SELECT sessiontimezone
FROM dual ;
-- sysdate: 2025/06/12 22:13:11
-- systimestamp: 2025/06/12 22:13:11.096000000 +09:00
SELECT sysdate, systimestamp
FROM dual ;
-- current_date: 2025/06/12 09:13:59
-- current_timestamp: 2025/06/12 09:13:59.751000000 AMERICA/NEW_YORK
-- localtimestamp: 2025/06/12 09:13:59.751000000
SELECT current_date, current_timestamp, localtimestamp
FROM dual ;
-- +00:00
SELECT DBTIMEZONE FROM DUAL;
-- -05:00
SELECT SESSIONTIMEZONE FROM DUAL;
데이터 유형 | 필드 |
---|---|
TIMESTAMP | 년, 월, 일, 시, 분, 초(소수 표시 초) |
TIMESTAMP WITH TIME ZONE | TIMESTAMP 데이터 유형과 동일하며 TIMEZONE_HOUR 및 TIMEZONE_MINUTE 또는 TIMEZONE_REGION을 포함 |
TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP 데이터 유형과 동일하며 값에 시간대 오프셋 포함 |
: 두 datetime값 간의 차이를 저장하는데 사용
두 가지 간격 유형
간격의 자릿수
데이터 유형 | 필드 |
---|---|
INTERVAL YEAR TO MONTH | 년, 월 |
INTERVAL DAY TO SECOND | 일, 시, 분, 초(소수 표시 초) |
CREATE TABLE t1
( c1 DATE,
c2 TIMESTAMP,
c3 TIMESTAMP WITH TIME ZONE,
c4 TIMESTAMP WITH LOCAL TIME ZONE,
c5 INTERVAL YEAR TO MONTH,
c6 INTERVAL DAY TO SECOND ) ;
INSERT INTO t1 (c1,c2,c3,c4)
VALUES (CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP) ;
INSERT INTO t1 (c1,c2,c3,c4)
VALUES (SYSTIMESTAMP, SYSTIMESTAMP, SYSTIMESTAMP, SYSTIMESTAMP) ;
SELECT * FROM t1 ;
-- 1-5: 1년 5개월
UPDATE t1
SET c5 = '1-5', c6 = '5 15:11:10' ;
SELECT * FROM t1 ;
-- 연산 가능
SELECT c1, c5, c6, c1 + c5, c1 + c6
FROM t1 ;
날짜에서 특정 요소만을 뽑아낼 때 사용
SELECT last_name, employee_id, hire_date
FROM employees
WHERE EXTRACT (YEAR FROM TO_DATE(hire_date, 'DD-MON-RR')) > 2007
ORDER BY hire_date;
SELECT last_name, hire_date
EXTRACT (MONTH FROM hire_date)
FROM employees
WHERE manager_id = 100;
YMINTERVAL
: Year to Month
DSINTERVAL
: Day to Second
-- SYSDATE: 2025/06/12 22:45:17
-- SYSDATE+TO_YMINTERVAL('1-2'): 2026/08/12 22:45:17
SELECT SYSDATE, SYSDATE + TO_YMINTERVAL ('1-2')
FROM dual ;
-- SYSDATE: 2025/06/12 22:50:34
-- SYSDATE+TO_DSINTERVAL('5 10:10:15'): 2025/06/18 09:00:49
SELECT SYSDATE, SYSDATE + TO_DSINTERVAL('5 10:10:15')
FROM dual ;