[SQL]

[SQL] 리터럴 (숫자, 날짜)

북방바다코끼리표범 2023. 9. 13. 10:40

복습

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배 정밀도 양의 무한대

 

숫자 리터럴의 세부 내용

 

 

 

구성요소

 

digit 0 ~ 9 사이의 숫자 하나를 의미
+ / - 숫자 앞의 부호(양수 또는 음수)를 의미
. 소수점을 의미
e, E 과학적 기수법(Scientific Notation)으로 표기할 때 사용
예를 들어 8.33e-4는 0.000833을 8.33e+4는 83,300을 의미.
e나 E 다음에 나오는 숫자는 지수를 나타냄.
이때 지수는 -130 ~ 125 사이의 값이어야 함.
f, F BINARY_FLOAT 타입을 나타내고, 32비트 부동 소수점 숫자.
d, D BINARY_DOUBLE 타입을 나타내고, 64비트 부동 소수점 숫자.

날짜형 리터럴

- 날짜와 시간 정보를 표현하는 리터럴

(DATE 리터럴, TIME 리터럴, TIMESTAMP 리터럴, TIMESTAMP WITH TIME ZONE 리터럴이 있음)

 

 

DATE

- 날짜와 시간 정보를 표현하는 날짜형 리터럴

 

 

DATE 리터럴의 특징

날짜형 리터럴 변환

    • Tibero에서는 TO_DATE 함수를 사용하여 날짜 값을 직접 지정하거나 문자 리터럴이나 숫자 리터럴로 표현된 날짜 값을 DATE 리터럴로 변환 가능
    • (이때 날짜를 리터럴로 표현하려면 그레고리안 달력을 사용)
      TO_DATE('2005/01/01 12:38:20', 'YY/MM/DD HH24:MI:SS')
       - 기본 날짜 형식은 'YYYY/MM/DD'이며 초기화 파라미터 파일에 NLS_DATE_FORMAT 파라미터로 정의되어 있음 (NLS_DATE_FORMAT은 날짜 형식을 지정하는 파라미터)

- 시간 정보가 없는 값으로 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 파라미터로 정의되어 있음

 

ANSI 표현

TIME '10:23:10.123456789'
TIME '10:23:10'
TIME '10:23'
TIME '10'

 

  • 기본 형식은 'HH24:MI:SS.FF9'
  • 분 이하는 생략 가능

 

TIMESTAMP

- DATE 리터럴을 확장한 날짜형 리터럴

 

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 형식을 지정하는 파라미터)

 

ANSI 표현

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 리터럴을 확장한 날짜형 리터럴

 

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 형식을 지정하는 파라미터)

ANSI 표현

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

- TIMESTAMP 리터럴과 동일한 형식을 사용