[SQL] 리터럴 (숫자, 날짜)
복습
https://shins99.tistory.com/76
[SQL] SQL 문장의 구성요소 (사용자 정의형), 리터럴 (문자열)
복습 https://shins99.tistory.com/75 [SQL] SQL 문장의 구성요소 (날짜형, 간격형, 대용량 객체형, 내재형) 복습 https://shins99.tistory.com/74 날짜형 날짜형은 시간이나 날짜를 저장하는 데이터 타입이다. 날짜형
shins99.tistory.com
(NUMBER 타입이 표현할 수 있는 최대 38자리의 정밀도를 초과하는 경우 숫자 리터럴은 NUMBER 타입의 최대 정밀도에 맞춘 후 나머지 수를 반올림 처리함 )
(NUMBER 타입이 표현할 수 있는 범위를 넘어서는 숫자 리터럴이 입력되면 에러가 발생)
BINARY_FLOAT_NAN | 단일 정밀도 NaN(Not A Number) |
BINARY_FLOAT_INFINITY | 단일 정밀도 양의 무한대 |
BINARY_DOUBLE_NAN | 2배 정밀도 NaN(Not A Number) |
BINARY_DOUBLE_INFINITY | 2배 정밀도 양의 무한대 |
숫자 리터럴의 세부 내용


구성요소
- 날짜와 시간 정보를 표현하는 리터럴
(DATE 리터럴, TIME 리터럴, TIMESTAMP 리터럴, TIMESTAMP WITH TIME ZONE 리터럴이 있음)
DATE
DATE 리터럴의 특징
날짜형 리터럴 변환
- 시간 정보가 없는 값으로 DATE 리터럴을 표현해야 한다면 기본 시간은 자정 (HH24 00:00:00, HH 12:00:00)
- 날짜 정보가 없는 값으로 DATE 리터럴을 표현해야 한다면 기본 날짜는 현재 시스템의 시간을 기준으로 달의 첫째 날로 지정됨
- DATE 리터럴을 비교할 때는 리터럴의 시간정보가 포함된 에러인지 확인이 필요
(한쪽에만 시간 정보가 있고 다른 쪽에는 시간 정보가 없을 경우 두 날짜가 같다고 비교하기 위해서는 시간 정보를 제거하고 비교해야 하는데 이때 TRUNC 함수를 사용)
TRUNC 함수를 사용한 예
TO_DATE('2005/01/01', 'YY/MM/DD') =
TRUNC(TO_DATE('2005/01/01 12:38:20', 'YY/MM/DD HH24:MI:SS'))
ANSI 표현
DATE '2005-01-01'
- 시간 정보가 없음
- 기본 형식은 'YYYY-MM-DD'
- 구분자는 하이픈(-) 외에도 슬래시(/), 애스터리스크(*), 점(.) 등이 있음
TIME
TIME 리터럴의 특징
- 날짜형 리터럴 변환
- Tibero에서는 TO_TIME 함수를 사용하여 시간 값을 직접 지정하거나 문자 리터럴이나 숫자 리터럴로 표현된 시간 값을 TIME 리터럴로 변환 가능
TO_TIME('12:38:20.123456789', 'HH24:MI:SSXFF')
- 기본 시간 형식은 초기화 파라미터 파일에 NLS_TIME_FORMAT 파라미터로 정의되어 있음
TIME '10:23:10.123456789'
TIME '10:23:10'
TIME '10:23'
TIME '10'
- 기본 형식은 'HH24:MI:SS.FF9'
- 분 이하는 생략 가능
TIMESTAMP
TIMESTAMP 리터럴의 특징
날짜형 리터럴 변환
- Tibero에서는 TO_TIMESTAMP 함수를 사용하여 문자열 리터럴이나 숫자 리터럴로 표현된 날짜 값을 TIMESTAMP 리터럴로 변환 가능
TO_TIMESTAMP('09-Aug-01 12:07:15.50', 'DD-Mon-RR HH24:MI:SS.FF')
- 기본 TIMESTAMP 형식은 초기화 파라미터 파일에 NLS_TIMESTAMP_FORMAT 파라미터로 정의 (NLS_TIMESTAMP_FORMAT은 TIMESTAMP 형식을 지정하는 파라미터)
TIMESTAMP '2005/01/31 08:13:50.112'
TIMESTAMP '2005/01/31 08:13:50'
TIMESTAMP '2005/01/31 08:13'
TIMESTAMP '2005/01/31 08'
TIMESTAMP '2005/01/31'
- 기본 형식은 'YYYY/MM/DD HH24:MI:SSxFF'
- 날짜 부분('YYYY/MM/DD') 이외에는 생략 가능
- 소수점 아래의 초('FF') 부분은 0~9자리까지 표현 가능
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH TIME ZONE 리터럴의 특징
날짜형 리터럴 변환
- Tibero에서는 TO_TIMESTAMP_TZ 함수를 사용하여 문자열 리터럴이나 숫자 리터럴로 표현된 날짜 값을 TIMESTAMP WITH TIME ZONE 리터럴로 변환 가능
TO_TIMESTAMP_TZ('2004-05-15 19:25:43 Asia/Seoul', 'YYYY-MM-DD HH24:MI:SS.FF TZR')
TO_TIMESTAMP_TZ('1988-11-21 10:31:58.754 -07:30', 'YYYY-MM-DD HH24:MI:SS.FF TZH:
TZM')
- 기본 TIMESTAMP WITH TIME ZONE 형식은 초기화 파라미터 파일에 NLS_TIMESTAMP_TZ_FORMAT 파라미터로 정의
(NLS_TIMESTAMP_TZ_FORMAT은 TIMESTAMP WITH TIME ZONE 형식을 지정하는 파라미터)
TIMESTAMP '1993/12/11 13:37:43.27 Asia/Seoul'
TIMESTAMP '1993/12/11 13:37:43.27 +09:00'
TIMESTAMP '1993/12/11 13:37:43.27 +07'
- 기본 형식은 'YYYY/MM/DD HH24:MI:SSXFF TZR'
- 소수점 아래의 초('FF') 부분은 0~9자리까지 표현 가능
- 시간대('TZR') 부분은 지역이름 또는 오프셋 형식으로 표현 가능
- (만약 시간대('TZR') 부분을 생략하는 경우엔 TIMESTAMP 타입 리터럴로 해석)
TIMESTAMP WITH LOCAL TIME ZONE