데이터 타입 변환 함수와 연산자

CAST

CAST(cast_operand AS cast_target)

CAST 연산자를 SELECT 문에서 어떤 값의 데이터 타입을 다른 데이터 타입으로 명시적으로 변환하는 데 사용할 수 있다. 조회 리스트 또는 WHERE 절의 값 수식을 다른 데이터 타입으로 변환할 수 있다.

Parameters:
  • cast_operand – 다른 타입으로 변환할 값을 선언한다.

  • cast_target – 변환할 타입을 지정한다.

Return type:

cast_target

경우에 따라 CAST 연산자를 쓰지 않고 데이터 타입이 자동으로 변환될 수 있다. 이에 대한 자세한 내용은 묵시적 타입 변환을 참고한다.

문자열을 날짜/시간 타입으로 변환하는 것에 대한 자세한 내용은 문자열을 날짜/시간 타입으로 CAST 을 참고한다.

CUBRID에서 CAST 연산자를 사용한 명시적인 타입 변환에 대해서 정리하면 다음의 표와 같다.

From \ To

EN

AN

VC

FC

VB

FB

ENUM

BLOB

CLOB

D

T

UT

UTZ

DT

DTZ

S

MS

SQ

EN

Yes

Yes

Yes

Yes

No

No

No

No

No

No

No

Yes

Yes

No

No

No

No

No

AN

Yes

Yes

Yes

Yes

No

No

No

No

No

No

No

Yes

Yes

No

No

No

No

No

VC

Yes

Yes

Yes(*)

Yes(*)

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

FC

Yes

Yes

Yes(*)

Yes(*)

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

VB

No

No

Yes

Yes

Yes

Yes

No

Yes

Yes

No

No

No

No

No

No

No

No

No

FB

No

No

Yes

Yes

Yes

Yes

No

Yes

Yes

No

No

No

No

No

No

No

No

No

ENUM

No

No

Yes

Yes

No

No

Yes

No

No

No

No

No

No

No

No

No

No

No

BLOB

No

No

No

No

Yes

Yes

Yes

Yes

No

No

No

No

No

No

No

No

No

No

CLOB

No

No

Yes

Yes

No

No

Yes

No

Yes

No

No

No

No

No

No

No

No

No

D

No

No

Yes

Yes

No

No

No

No

No

Yes

No

Yes

Yes

Yes

Yes

No

No

No

T

No

No

Yes

Yes

No

No

No

No

No

No

Yes

No

No

No

No

No

No

No

UT

No

No

Yes

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

UTZ

No

No

Yes

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

DT

No

No

Yes

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

DTZ

No

No

Yes

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

S

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

MS

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

SQ

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

(*): 이 경우에 CAST 연산은 값 수식과 변환할 데이터 타입이 같은 문자셋을 가질 경우에만 허용된다.

  • 데이터 타입 키

    • EN: 정확한 수치(INTEGER, SMALLINT, BIGINT, NUMERIC, DECIMAL)

    • AN: 근사값 수치(FLOAT/REAL, DOUBLE)

    • VC: 가변 길이 문자열(VARCHAR (n))

    • FC: 고정 길이 문자열(CHAR (n))

    • VB: 가변 길이 비트열(BIT VARYING (n))

    • FB: 고정 길이 비트열(BIT (n))

    • ENUM: ENUM 타입

    • BLOB: DB 외부에 저장하는 바이너리 데이터(BLOB)

    • CLOB: DB 외부에 저장하는 문자열 데이터(CLOB)

    • D: DATE

    • T: TIME

    • DT: DATETIME

    • DTZ: DATETIME WITH TIME ZONEDATETIME WITH LOCAL TIME ZONE 데이터 타입

    • UT: TIMESTAMP

    • UTZ: TIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONE 데이터 타입

    • S: SET

    • MS: MULTISET

    • SQ: LIST (= SEQUENCE)

--operation after casting character as INT type returns 2
SELECT (1+CAST ('1' AS INT));
2
--cannot cast the string which is out of range as SMALLINT
SELECT (1+CAST('1234567890' AS SMALLINT));
ERROR: Cannot coerce value of domain "character" to domain "smallint".
--operation after casting returns 1+1234567890
SELECT (1+CAST('1234567890' AS INT));
1234567891
--'1234.567890' is casted to 1235 after rounding up
SELECT (1+CAST('1234.567890' AS INT));
1236
--'1234.567890' is casted to string containing only first 5 letters.
SELECT (CAST('1234.567890' AS CHAR(5)));
'1234.'
--numeric type can be casted to CHAR type only when enough length is specified
SELECT (CAST(1234.567890 AS CHAR(5)));
ERROR: Cannot coerce value of domain "numeric" to domain "character".
--numeric type can be casted to CHAR type only when enough length is specified
SELECT (CAST(1234.567890 AS CHAR(11)));
'1234.567890'
--numeric type can be casted to CHAR type only when enough length is specified
SELECT (CAST(1234.567890 AS VARCHAR));
'1234.567890'
--string can be casted to time/date types only when its literal is correctly specified
SELECT (CAST('2008-12-25 10:30:20' AS TIMESTAMP));
10:30:20 AM 12/25/2008
SELECT (CAST('10:30:20' AS TIME));
10:30:20 AM
--string can be casted to TIME type when its literal is same as TIME's.
SELECT (CAST('2008-12-25 10:30:20' AS TIME));
10:30:20 AM
--string can be casted to TIME type after specifying its type of the string
SELECT (CAST(TIMESTAMP'2008-12-25 10:30:20' AS TIME));
10:30:20 AM
SELECT CAST('abcde' AS BLOB);
file:/home1/user1/db/tdb/lob/ces_743/ces_temp.00001283232024309172_1342
SELECT CAST(B'11010000' as varchar(10));
'd0'
SELECT CAST('1A' AS BLOB);
X'1a00'
--numbers can be casted to TIMESTAMP type
SELECT CAST (1 AS TIMESTAMP), CAST (1.2F AS TIMESTAMP);
09:00:01 AM 01/01/1970     09:00:01 AM 01/01/1970
--numbers cannot be casted to DATETIME type
SELECT CAST (1 AS DATETIME);
Cannot coerce 1 to type datetime
--TIMESTAMP cannot be casted to numbers
SELECT CAST (TIMESTAMP'09:00:01 AM 01/01/1970' AS INT)
Cannot coerce timestamp '09:00:01 AM 01/01/1970' to type integer.

Note

  • CAST 변환은 같은 문자셋을 가지는 데이터 타입끼리만 허용된다.

  • 근사치 데이터 타입(FLOAT, DOUBLE)이 정수형으로 변환되는 경우, 소수점 아래 자리가 반올림 처리된다.

  • 정확한 수치 데이터 타입(NUMERIC)이 정수형으로 변환되는 경우, 소수점 아래 자리가 반올림 처리된다.

  • 수치 데이터 타입을 문자열 타입으로 변환하는 경우, 문자열의 길이가 (모든 유효 숫자 자리 + 소수점) 이상이 되도록 충분하게 지정해야 한다. 그렇지 않으면 에러가 발생한다.

  • 문자열 타입 A를 문자열 타입 B로 변환하는 경우, A의 길이 이상이 되도록 충분하게 지정되지 않으면 문자열 끝 부분이 삭제(truncate)되어 저장된다.

  • 문자열 타입 A를 날짜/시간 데이터 타입 B로 변환하는 경우, A의 리터럴이 B 타입과 일치하는 경우에만 변환된다. 그렇지 않을 경우 에러가 발생한다.

  • 문자열로 저장된 수치 데이터는 명시적으로 타입 변환을 해주어야 산술 연산이 가능하다.

DATE_FORMAT

DATE_FORMAT(date, format)

DATE_FORMAT 함수는 날짜를 포함하는 날짜/시간 타입 값을 지정된 날짜/시간 형식의 문자열로 출력하며, 리턴 값은 VARCHAR 타입이다. 지정할 format 인자는 아래의 날짜/시간 형식 2 표를 참고한다. 날짜/시간 형식 2 표는 DATE_FORMAT() 함수, TIME_FORMAT() 함수, STR_TO_DATE() 함수에서 사용된다.

Parameters:
  • date – DATE, TIMESTAMP, DATETIME, DATETIMETZ, DATETIMELTZ, TIMESTAMPTZ, 또는 TIMESTAMPLTZ 타입의 값

  • format – 출력 형식을 지정한다. ‘%’로 시작하는 형식 지정자(specifier)를 사용한다.

Return type:

STRING

format 인자가 지정되면 지정된 언어에 맞는 형식으로 날짜를 출력한다. 이때 언어는 intl_date_lang 시스템 파라미터에 지정한 언어가 적용된다. intl_date_lang이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 format 이 “%d %M %Y”인 경우 “2009년 10월 3일”인 날짜를 “3 Oktober 2009”인 문자열로 출력한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

아래 날짜/시간 형식 2 표에서 월 이름, 요일 이름, 일 이름, 오전/오후 이름 등은 언어에 따라 다르다.

날짜/시간 형식 2

format 값

의미

%a

Weekday, 영문 약어 (Sun, …, Sat)

%b

Month, 영문 약어 (Jan, …, Dec)

%c

Month(1, …, 12)

%D

Day of the month, 서수 영문 문자열(1st, 2nd, 3rd, …)

%d

Day of the month, 두 자리 숫자(01, …, 31)

%e

Day of the month (1, …, 31)

%f

Milliseconds, 세 자리 숫자 (000, …, 999)

%H

Hour, 24시간 기준, 두 자리 수 이상 (00, …, 23, …, 100, …)

%h

Hour, 12시간 기준 두 자리 숫자 (01, …, 12)

%I

Hour, 12시간 기준 두 자리 숫자 (01, …, 12)

%i

Minutes, 두 자리 숫자 (00, …, 59)

%j

Day of year, 세 자리 숫자 (001, …, 366)

%k

Hour, 24시간 기준, 한 자리 수 이상 (0, …, 23, …, 100, …)

%l

Hour, 12시간 기준 (1, …, 12)

%M

Month, 영문 문자열 (January, …, December)

%m

Month, 두 자리 숫자 (01, …, 12)

%p

AM or PM

%r

Time, 12 시간 기준, 시:분:초 (hh:mi:ss AM or hh:mi:ss PM)

%S

Seconds, 두 자리 숫자 (00, …, 59)

%s

Seconds, 두 자리 숫자 (00, …, 59)

%T

Time, 24시간 기준, 시:분:초 (hh:mi:ss)

%U

Week, 두 자리 숫자, 일요일이 첫날인 주 단위 (00, …, 53)

%u

Week, 두 자리 숫자, 월요일이 첫날인 주 단위 (00, …, 53)

%V

Week, 두 자리 숫자, 일요일이 첫날인 주 단위 (01, …, 53) %X와 결합되어 사용 가능

%v

Week, 두 자리 숫자, 월요일이 첫날인 주 단위 (01, …, 53) %x 와 결합되어 사용 가능

%W

Weekday, 영문 문자열 (Sunday, …, Saturday)

%w

Day of the week, 숫자 인덱스 (0=Sunday, …, 6=Saturday)

%X

Year, 네 자리 숫자, 일요일이 첫날인 주 단위로 계산(0000, …, 9999) %V와 결합되어 사용 가능

%x

Year, 네 자리 숫자, 월요일이 첫날인 주 단위로 계산(0000, …, 9999) %v와 결합되어 사용 가능

%Y

Year, 네 자리 숫자 (0001, …, 9999)

%y

Year, 두 자리 숫자 (00, 01, …, 99)

%%

특수문자 “%”를 그대로 출력하는 경우

%x

형식 지정자로 쓰이지 않는 영문자 중 임의의 문자 x를 그대로 출력하는 경우

%TZR

타임존 영역 정보(예: US/Pacific)

%TZD

일광 절약 정보(예: KST, KT, EET)

%TZH

타임존의 시간 오프셋(예: +09, -09)

%TZM

타임존의 분 오프셋 (예: +00, +30)

Note

%TZR, %TZD, %TZH, %TZM은 타임존 타입에서만 사용 가능하다.

Note

TZD 뒤에 숫자를 명시하는 포맷

TZD 뒤에 숫자를 명시하는 포맷을 참고한다.

다음은 시스템 파라미터 intl_date_lang 의 값이 “en_US”인 경우의 예이다.

SELECT DATE_FORMAT(datetime'2009-10-04 22:23:00', '%W %M %Y');
'Sunday October 2009'
SELECT DATE_FORMAT(datetime'2007-10-04 22:23:00', '%H:%i:%s');
'22:23:00'
SELECT DATE_FORMAT(datetime'1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
'4th 00 Thu 04 10 Oct 277'
SELECT DATE_FORMAT(date'1999-01-01', '%X %V');
'1998 52'

다음은 시스템 파라미터 intl_date_lang 의 값이 “de_DE”인 경우의 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT DATE_FORMAT(datetime'2009-10-04 22:23:00', '%W %M %Y');
'Sonntag Oktober 2009'
SELECT DATE_FORMAT(datetime'2007-10-04 22:23:00', '%H:%i:%s %p');
'22:23:00 Nachm.'
SELECT DATE_FORMAT(datetime'1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
'4 00 Do. 04 10 Okt 277'

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

다음은 타임존 정보를 포함하는 DATETIMETZ 타입의 값을 원하는 형식에 맞게 문자열로 변환하여 출력하는 예제이다.

SELECT DATE_FORMAT(datetimetz'2012-02-02 10:10:10 Europe/Zurich CET', '%TZR %TZD %TZH %TZM');
'Europe/Zurich CET 01 00'

FORMAT

FORMAT(x, dec)

FORMAT 함수는 숫자 x 의 형식이 #,###,###.##### 이 되도록, 소수점 위 세 자리마다 자릿수 구분 기호로 구분하고 소수점 기호 아래 숫자가 dec 만큼 표현되도록 dec 의 아랫자리에서 반올림을 수행한 결과를 VARCHAR 타입으로 반환한다.

Parameters:
  • x – 수치 값을 반환하는 임의의 연산식이다.

  • dec – 소수점 이하 자릿수

Return type:

STRING

자릿수 구분 기호와 소수점 기호는 지정한 언어에 맞는 형식으로 출력한다. 이때 언어는 intl_number_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_number_lang 값이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”나 “fr_FR”과 같은 유럽 국가의 언어이면 “.”를 숫자의 자릿수 구분 기호로 해석하고 “,”를 소수점 기호로 해석한다(언어별 숫자의 기본 출력 참고).

다음은 시스템 파라미터 intl_number_lang 의 값을 “en_US”로 설정하여 수행한 예이다.

SET SYSTEM PARAMETERS 'intl_number_lang="en_US"';
SELECT FORMAT(12000.123456,3), FORMAT(12000.123456,0);
'12,000.123'          '12,000'

다음은 시스템 파라미터 intl_number_lang 의 값을 “de_DE”로 설정하여 생성한 데이터베이스에서 실행한 예이다. 독일, 프랑스 등 유럽 국가 대부분의 숫자 출력 형식은 “.”가 자릿수 구분 기호이고, “,”가 소수점 기호이다.

SET SYSTEM PARAMETERS 'intl_number_lang="de_DE"';
SELECT FORMAT(12000.123456,3), FORMAT(12000.123456,0);
'12.000,123'          '12.000'

STR_TO_DATE

STR_TO_DATE(string, format)

STR_TO_DATE 함수는 인자로 주어진 문자열을 지정된 형식에 따라 해석하여 날짜/시간 값으로 변환하며, DATE_FORMAT() 함수와 반대로 동작한다. 리턴 값은 문자열에 포함된 날짜 또는 시간 부분에 따라 타입이 결정된다.

Parameters:
  • string – 문자열

  • format – 문자열 해석을 위한 형식을 지정한다. %를 포함하는 문자열을 형식 지정자(specifier)로 사용한다. DATE_FORMAT() 함수의 날짜/시간 형식 2 표를 참고한다.

Return type:

DATETIME, DATE, TIME, DATETIMETZ

지정할 format 인자는 DATE_FORMAT() 함수의 날짜/시간 형식 2 표를 참고한다.

string에 유효하지 않은 날짜/시간 값이 포함되거나, format에 지정된 형식 지정자를 적용하여 문자열을 해석할 수 없으면 에러를 리턴한다.

format 인자가 지정되면 지정된 언어에 맞는 형식으로 string 을 해석한다. 이때 언어는 intl_date_lang 시스템 파라미터에 지정한 언어가 적용된다. intl_date_lang 값이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 format 이 “%d %M %Y”인 경우 “3 Oktober 2009”인 문자열을 “2009년 10월 3일”인 DATE 타입으로 해석한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

인자의 연, 월, 일에는 0을 입력할 수 없으나, 예외적으로 날짜와 시간이 모두 0인 값을 입력한 경우에는 날짜와 시간 값이 모두 0인 DATE, DATETIME 타입의 값을 반환한다. 그러나 JDBC 프로그램에서는 연결 URL 속성인 zeroDateTimeBehavior의 설정에 따라 동작이 달라진다. 이에 관한 자세한 내용은 연결 설정을 참고하면 된다.

다음은 시스템 파라미터 intl_date_lang 의 값이 “en_US”인 경우의 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="en_US"';
SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
05/01/2013
SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y');
05/01/2013
SELECT STR_TO_DATE('13:30:17','%H:%i');
01:30:00 PM
SELECT STR_TO_DATE('09:30:17 PM','%r');
09:30:17 PM
SELECT STR_TO_DATE('0,0,0000','%d,%m,%Y');
00/00/0000

다음은 시스템 파라미터 intl_date_lang 의 값이 “de_DE”인 경우의 예이다. 독일어 Oktober가 10월로 해석된다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT STR_TO_DATE('3 Oktober 2009', '%d %M %Y');
10/03/2009

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

다음은 타임존 정보를 포함하는 날짜/시간 문자열을 DATETIMETZ 타입으로 변환하는 예제이다.

SELECT STR_TO_DATE('2001-10-11 02:03:04 AM Europe/Bucharest EEST', '%Y-%m-%d %h:%i:%s %p %TZR %TZD');
02:03:04.000 AM 10/11/2001 Europe/Bucharest EEST

TIME_FORMAT

TIME_FORMAT(time, format)

TIME_FORMAT 함수는 시간을 포함하는 날짜/시간 타입 값을 지정된 시간 형식의 문자열로 출력하며, 리턴 값은 VARCHAR 타입이다.

Parameters:
  • time – 시간을 포함하는 타입(TIME, TIMESTAMP, DATETIME, TIMESTAMPTZ 또는 DATETIMETZ)의 값.

  • format – 문자열 해석을 위한 형식을 지정한다. %를 포함하는 문자열을 형식 지정자(specifier)로 사용한다. DATE_FORMAT() 함수의 날짜/시간 형식 2 표를 참고한다.

Return type:

STRING

format 인자가 지정되면 지정된 언어에 맞는 형식으로 날짜를 출력한다. 이때 언어는 intl_date_lang 시스템 파라미터에 지정한 언어가 적용된다. intl_date_lang 값이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 format 이 “%h:%i:%s %p”인 경우 “08:46:53 PM”인 시간을 “08:46:53 Nachm.”으로 출력한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

다음은 시스템 파라미터 intl_date_lang 의 값이 “en_US”인 경우의 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="en_US"';
SELECT TIME_FORMAT(time'22:23:00', '%H %i %s');
'22 23 00'
SELECT TIME_FORMAT(time'23:59:00', '%H %h %i %s %f');
'23 11 59 00 000'
SELECT SYSTIME, TIME_FORMAT(SYSTIME, '%p');
08:46:53 PM  'PM'

다음은 시스템 파라미터 intl_date_lang 의 값이 “de_DE”인 경우의 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT SYSTIME, TIME_FORMAT(SYSTIME, '%p');
08:46:53 PM  'Nachm.'

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

다음은 타임존 정보를 포함하는 값을 명시한 포맷의 문자열로 출력하는 예이다.

SELECT TIME_FORMAT(datetimetz'2001-10-11 02:03:04 AM Europe/Bucharest EEST', '%h:%i:%s %p %TZR %TZD');
'02:03:04 AM Europe/Bucharest EEST'

TO_CHAR(date_time)

TO_CHAR(date_time[, format[, date_lang_string_literal]])

TO_CHAR (date_time) 함수는 날짜/시간 타입 값을 날짜/시간 형식 1 표에 따라 문자열로 변환하여 이를 반환하며, 리턴 값의 타입은 VARCHAR 이다.

Parameters:
  • date_time – 날짜/시간 타입(TIME, DATE, TIMESTAMP, DATETIME, DATETIMETZ, DATETIMELTZ, TIMESTAMPTZ, TIMESTAMPLTZ )의 값.

  • format – 리턴 값의 형식

  • date_lang_string_literal – 리턴 값에 적용할 언어를 지정한다.

Return type:

STRING

format 인자가 지정되면 지정한 언어에 맞는 형식으로 date_time 을 출력한다. 자세한 형식은 날짜/시간 형식 1 표를 참고하면 된다. 언어는 date_lang_string_literal 인자에 의해 정해진다. date_lang_string_literal 인자가 생략되면 intl_date_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_date_lang 값이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 format이 “HH:MI:SS AM”인 경우 “08:46:53 PM”인 시간을 “08:46:53 Nachm.”으로 출력한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

format 인자가 생략되면 “en_US”의 기본 출력 형식을 따라 date_time을 문자열로 출력한다(아래 날짜/시간 타입에 대한 언어별 기본 출력 형식 표의 en_US 참고).

Note

CUBRID 9.0 미만 버전에서 사용되었던 CUBRID_DATE_LANG 환경 변수는 더 이상 사용되지 않는다.

날짜/시간 타입에 대한 언어별 기본 출력 형식

LANG

DATE

TIME

TIMESTAMP

DATETIME

TIMESTAMP WITH TIME ZONE

DATETIME WITH TIME ZONE

en_US

‘MM/DD/YYYY’

‘HH:MI:SS AM’

‘HH:MI:SS AM MM/DD/YYYY’

‘HH:MI:SS.FF AM MM/DD/YYYY’

‘HH:MI:SS AM MM/DD/YYYY TZR’

‘HH:MI:SS.FF AM MM/DD/YYYY TZR’

de_DE

‘DD.MM.YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD.MM.YYYY’

‘HH24:MI:SS.FF DD.MM.YYYY’

‘HH24:MI:SS DD.MM.YYYY TZR’

‘HH24:MI:SS.FF DD.MM.YYYY TZR’

es_ES

‘DD.MM.YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD.MM.YYYY’

‘HH24:MI:SS.FF DD.MM.YYYY’

‘HH24:MI:SS DD/MM/YYYY TZR’

‘HH24:MI:SS.FF DD/MM/YYYY TZR’

fr_FR

‘DD.MM.YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD.MM.YYYY’

‘HH24:MI:SS.FF DD.MM.YYYY’

‘HH24:MI:SS DD/MM/YYYY TZR’

‘HH24:MI:SS.FF DD/MM/YYYY TZR’

it_IT

‘DD.MM.YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD.MM.YYYY’

‘HH24:MI:SS.FF DD.MM.YYYY’

‘HH24:MI:SS DD/MM/YYYY TZR’

‘HH24:MI:SS.FF DD/MM/YYYY TZR’

ja_JP

‘YYYY/MM/DD’

‘HH24:MI:SS’

‘HH24:MI:SS YYYY/MM/DD’

‘HH24:MI:SS.FF YYYY/MM/DD’

‘HH24:MI:SS YYYY/MM/DD TZR’

‘HH24:MI:SS.FF YYYY/MM/DD TZR’

km_KH

‘DD/MM/YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD/MM/YYYY’

‘HH24:MI:SS.FF DD/MM/YYYY’

‘HH24:MI:SS DD/MM/YYYY TZR’

‘HH24:MI:SS.FF DD/MM/YYYY TZR’

ko_KR

‘YYYY.MM.DD’

‘HH24:MI:SS’

‘HH24:MI:SS YYYY.MM.DD’

‘HH24:MI:SS.FF YYYY.MM.DD’

‘HH24:MI:SS YYYY.MM.DD TZR’

‘HH24:MI:SS.FF YYYY.MM.DD TZR’

tr_TR

‘DD.MM.YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD.MM.YYYY’

‘HH24:MI:SS.FF DD.MM.YYYY’

‘HH24:MI:SS DD.MM.YYYY TZR’

‘HH24:MI:SS.FF DD.MM.YYYY TZR’

vi_VN

‘DD/MM/YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD/MM/YYYY’

‘HH24:MI:SS.FF DD/MM/YYYY’

‘HH24:MI:SS DD/MM/YYYY TZR’

‘HH24:MI:SS.FF DD/MM/YYYY TZR’

zh_CN

‘YYYY-MM-DD’

‘HH24:MI:SS’

‘HH24:MI:SS YYYY-MM-DD’

‘HH24:MI:SS.FF YYYY-MM-DD’

‘HH24:MI:SS YYYY-MM-DD TZR’

‘HH24:MI:SS.FF YYYY-MM-DD TZR’

ro_RO

‘DD.MM.YYYY’

‘HH24:MI:SS’

‘HH24:MI:SS DD.MM.YYYY’

‘HH24:MI:SS.FF DD.MM.YYYY’

‘HH24:MI:SS DD.MM.YYYY TZR’

‘HH24:MI:SS.FF DD.MM.YYYY TZR’

날짜/시간 형식 1

format 값

의미

CC

세기(Century)

YYYY , YY

4자리 연도, 2자리 연도

Q

분기(1, 2, 3, 4; 1월~3월 = 1)

MM

월(01-12; 1월 = 01) 참고: 분(minute)은 MI이다.

MONTH

월 이름

MON

축약된 월 이름

DD

날(1-31)

DAY

요일 이름

DY

축약된 요일 이름

D 또는 d

요일(1-7)

AM 또는 PM

오전/오후

A.M. 또는 P.M.

마침표가 포함된 오전/오후

HH 또는 HH12

시(1-12)

HH24

시(0-23)

MI

분(0-59)

SS

초(0-59)

FF

밀리초(0-999)

- / , . ; : “텍스트”

구두점과 인용구는 그대로 결과에 표현됨

TZD

일광 절약 정보(예: KST, KT, EET)

TZH

타임존의 시간 오프셋(예: +09, -09)

TZM

타임존의 분 오프셋 (예: 00, 30)

Note

TZR, TZD, TZH, TZM은 타임존 타입에서만 사용 가능하다.

Note

TZD 뒤에 숫자를 명시하는 포맷

TZD는 뒤에 숫자를 붙여서도 사용할 수 있다. TZD2~TZD11까지 사용할 수 있는데, 일반 문자를 문자열의 구분자로 사용하는 경우 숫자가 뒤따르는 포맷을 사용할 수 있다.

SELECT STR_TO_DATE('09:30:17 20140307XEESTXEurope/Bucharest','%h:%i:%s %Y%d%mX%TZD4X%TZR');
09:30:17.000 AM 07/03/2014 Europe/Bucharest EEST

위와 같이 각각의 값을 구분하기 위한 구분자로 일반 문자인 ‘X’를 사용하는 경우, TZD 값은 길이가 변할 수 있는 값이므로 TZD의 값과 구분자를 구분하기에 모호하다. 이런 경우 TZD의 길이를 명시하여야 한다.

date_lang_string_literal 예

형식 구성 요소

date_lang_string_literal

‘en_US’

‘ko_KR’

MONTH

JANUARY

1월

MON

JAN

1

DAY

MONDAY

월요일

DY

MON

Month

January

1월

Mon

Jan

1

Day

Monday

월요일

Dy

Mon

month

january

1월

mon

jan

1

day

monday

월요일

Dy

mon

AM

AM

오전

Am

Am

오전

am

am

오전

A.M.

A.M.

오전

A.m.

A.m.

오전

a.m.

a.m.

오전

PM

PM

오후

Pm

Pm

오후

pm

pm

오후

P.M.

P.M.

오후

P.m.

P.m.

오후

p.m.

p.m.

오후

리턴 값 형식의 자릿수의 예

형식 구성 요소

en_US 자릿수

ko_KR 자릿수

MONTH(Month, month)

9

4

MON(Mon, mon)

3

2

DAY(Day, day)

9

6

DY(Dy, dy)

3

2

HH12, HH24

2

2

“텍스트”

텍스트의 길이

텍스트의 길이

나머지 형식

주어진 형식의 길이와 같음

주어진 형식의 길이와 같음

다음은 언어 및 문자셋을 “en_US.iso88591”로 설정하여 생성한 데이터베이스에서 수행한 예이다.

-- create database testdb en_US.iso88591

--creating a table having date/time type columns
CREATE TABLE datetime_tbl(a TIME, b DATE, c TIMESTAMP, d DATETIME);
INSERT INTO datetime_tbl VALUES(SYSTIME, SYSDATE, SYSTIMESTAMP, SYSDATETIME);

--selecting a VARCHAR type string from the data in the specified format
SELECT TO_CHAR(b, 'DD, DY , MON, YYYY') FROM datetime_tbl;
'20, TUE , AUG, 2013'
SELECT TO_CHAR(c, 'HH24:MI, DD, MONTH, YYYY') FROM datetime_tbl;
'17:00, 20, AUGUST   , 2013'
SELECT TO_CHAR(d, 'HH12:MI:SS:FF pm, YYYY-MM-DD-DAY') FROM datetime_tbl;
'05:00:58:358 pm, 2013-08-20-TUESDAY  '
SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy');
'Sunday    October   2009'

다음은 위에서 생성한 데이터베이스에서 TO_CHAR 함수에 언어 인자를 별도로 부여한 예이다. 문자셋이 ISO-8859-1이면 TO_CHAR 함수의 언어 인자를 “tr_TR”과 “ko_KR”로 설정하는 것은 허용하나, 다른 언어는 허용하지 않는다. TO_CHAR 의 언어 인자로 모든 언어를 사용 가능하게 하려면 데이터베이스 생성 시 문자셋이 UTF8이어야 한다.

SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','ko_KR');
'Iryoil    10wol 2009'
SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','tr_TR');
'Pazar     Ekim    2009'

Note

  • 언어에 따라 월 이름, 일 이름, 요일 이름, 오전/오후 이름의 해석이 변경되는 함수에서 문자셋이 ISO-8859-1인 경우 “en_US” 외에 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다(위의 예 참고). 다만, 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 시스템 파라미터 intl_date_lang을 설정하거나 TO_CHAR 함수의 언어 인자를 지정하여 CUBRID가 지원하는 모든 언어(위 구문의 date_lang_string_literal 참고) 중 하나로 변경할 수 있다. 언어에 따라 날짜/시간 형식의 해석이 변경되는 함수들의 목록은 시스템 파라미터 intl_date_lang의 설명을 참고한다.

    -- change date locale as "de_DE" and run the below query.
    -- This case is failed because database locale, en_US's charset is ISO-8859-1
    -- and 'de_DE' only supports UTF-8 charset.
    
    SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','de_DE');
    
    ERROR: before ' , 'Day Month yyyy','de_DE'); '
    Locales for language 'de_DE' are not available with charset 'iso8859-1'.
    

    다음은 DB 생성 시 로캘을 “en_US.utf8”로 설정하고 생성한 데이터베이스에서 TO_CHAR 함수에 언어 인자를 “de_DE”로 지정하고 실행한 예이다.

    SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','de_DE');
    
    'Sonntag   Oktober 2009'
    
  • 첫번째 인자가 zerodate이고 두번째 인자에 ‘Month’, ‘Day’와 같은 리터럴 형식이 지정되면 TO_CHAR 함수는 NULL을 반환한다.

    SELECT TO_CHAR(timestamp '0000-00-00 00:00:00', 'Month Day YYYY');
    
    NULL
    

다음은 타임존 정보를 포함하는 날짜/시간 타입을 TO_CHAR 함수에서 출력하는 예이다.

형식을 정의하지 않으면 아래와 같은 순서로 출력된다.

SELECT TO_CHAR(datetimetz'2001-10-11 02:03:04 AM Europe/Bucharest EEST');
'02:03:04.000 AM 10/11/2001 Europe/Bucharest EEST'

형식을 정의하면 정의한 순서대로 출력된다.

SELECT TO_CHAR(datetimetz'2001-10-11 02:03:04 AM Europe/Bucharest EEST', 'MM/DD/YYYY HH24:MI TZR TZD TZH TZM');
'10/11/2001 02:03 Europe/Bucharest EEST +03 +00'

TO_CHAR(number)

TO_CHAR(number[, format[, number_lang_string_literal]])

TO_CHAR (number) 함수는 수치형 데이터 타입을 숫자 형식에 맞는 문자열로 변환하여 VARCHAR 타입으로 반환한다.

Parameters:
  • number – 숫자를 반환하는 수치형 데이터 타입의 연산식을 지정한다. 입력값이 NULL이면 결과로 NULL이 반환된다. 입력값이 문자열 타입이면 해당 문자열을 그대로 반환한다.

  • format – 리턴 값의 형식을 지정한다. 값이 NULL인 경우에는 NULL이 반환된다.

  • number_lang_string_literal – 입력 숫자를 출력할 때 적용할 언어를 지정한다.

Return type:

STRING

format 인자가 지정되면 지정한 언어에 맞는 형식으로 number를 출력한다. 이때 언어는 number_lang_string_literal 인자에 의해 정해진다. number_lang_string_literal 인자가 생략되면 intl_number_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_number_lang 값이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”나 “fr_FR”과 같은 유럽 국가의 언어이면 “.”를 숫자의 자릿수 구분 기호로 출력하고 “,”를 소수점 기호로 출력한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

format 인자가 생략되면 지정된 언어의 기본 출력에 따라 number 를 문자열로 출력한다(언어별 숫자의 기본 출력 표 참고).

숫자 형식

형식 구성 요소

예제

설명

9

9999

“9”의 개수는 반환될 유효숫자 자릿수를 나타낸다. 숫자 인자에 대해 형식에서 지정된 유효숫자 자릿수가 부족하면, 소수부에 대해서는 반올림 연산을 수행한다. 숫자 인자의 정수부 자릿수보다 유효숫자 자릿수가 부족하면 #을 출력한다.

0

0999

형식에서 지정된 유효숫자 자릿수가 충분한 경우, 정수부 앞 부분을 공백이 아닌 0으로 채워 반환한다.

S

S9999

지정된 위치에 양수/음수 부호를 출력한다. 부호는 문자열의 시작부분에만 사용할 수 있다.

C

C9999

지정된 위치에 ISO 통화 기호를 반환한다.

, (쉼표)

9,999

지정된 위치에 쉼표(“,”)를 반환한다. 언어의 설정에 따라 쓰임이 달라지는데, 자릿수 구분 기호로 사용될 경우 여러 개가 허용되며, 소수점 기호로 사용될 경우 한 개만 허용된다. 언어별 숫자의 기본 출력 표 참고

. (마침표)

9.999

지정된 위치에 마침표를 출력한다. 언어의 설정에 따라 쓰임이 달라지는데, 자릿수 구분 기호로 사용될 경우 여러 개가 허용되며, 소수점 기호로 사용될 경우 한 개만 허용된다. 언어별 숫자의 기본 출력 표 참고

EEEE

9.99EEEE

과학적 기수법(scientific notation)을 반환한다.

언어별 숫자의 기본 출력

언어

로캘 이름

자릿수 구분 기호

소수점 기호

숫자 표기 예

영어

en_US

,(쉼표)

.(마침표)

123,456,789.012

독일어

de_DE

.(마침표)

,(쉼표)

123.456.789,012

스페인어

es_ES

.(마침표)

,(쉼표)

123.456.789,012

프랑스어

fr_FR

.(마침표)

,(쉼표)

123.456.789,012

이태리어

it_IT

.(마침표)

,(쉼표)

123.456.789,012

일본어

ja_JP

,(쉼표)

.(마침표)

123,456,789.012

캄보디아어

km_KH

.(마침표)

,(쉼표)

123.456.789,012

한국어

ko_KR

,(쉼표)

.(마침표)

123,456,789.012

터키어

tr_TR

.(마침표)

,(쉼표)

123.456.789,012

베트남어

vi_VN

.(마침표)

,(쉼표)

123.456.789,012

중국어

zh_CN

,(쉼표)

.(마침표)

123,456,789.012

루마니아어

ro_RO

.(마침표)

,(쉼표)

123.456.789,012

다음은 DB 생성 시 로캘을 “en_US.utf8”로 설정하여 생성한 데이터베이스에서 수행한 예이다.

--selecting a string casted from a number in the specified format
SELECT TO_CHAR(12345,'S999999'), TO_CHAR(12345,'S099999');
' +12345'             '+012345'
SELECT TO_CHAR(1234567,'9,999,999,999');
'    1,234,567'
SELECT TO_CHAR(1234567,'9.999.999.999');
'#############'
SELECT TO_CHAR(123.4567,'99'), TO_CHAR(123.4567,'999.99999'), TO_CHAR(123.4567,'99999.999');
'##'                  '123.45670'           '  123.457'

다음은 시스템 파라미터 intl_number_lang의 값을 “de_DE”로 설정하고 수행한 예이다. 독일, 프랑스 등 유럽 국가 대부분의 숫자 출력 형식은 “.”가 자릿수 구분 기호이고, “,”가 소수점 기호이다.

SET SYSTEM PARAMETERS 'intl_number_lang="de_DE"';

--selecting a string casted from a number in the specified format
SELECT TO_CHAR(12345,'S999999'), TO_CHAR(12345,'S099999');
' +12345'             '+012345'
SELECT TO_CHAR(1234567,'9,999,999,999');
'#############'
SELECT TO_CHAR(1234567,'9.999.999.999');
'    1.234.567'
SELECT TO_CHAR(123.4567,'99'), TO_CHAR(123.4567,'999,99999'), TO_CHAR(123.4567,'99999,999');
'##'                  '123,45670'           '  123,457'
SELECT TO_CHAR(123.4567,'99','en_US'), TO_CHAR(123.4567,'999.99999','en_US'), TO_CHAR(123.4567,'99999.999','en_US');
'##'                  '123.45670'           '  123.457'
SELECT TO_CHAR(1.234567,'99.999EEEE','en_US'), TO_CHAR(1.234567,'99,999EEEE','de_DE'), to_char(123.4567);
'1.235E+00'           '1,235E+00'           '123,4567'

TO_DATE

TO_DATE(string[, format[, date_lang_string_literal]])

TO_DATE 함수는 인자로 지정된 날짜 형식을 기준으로 문자열을 해석하여, 이를 DATE 타입의 값으로 변환하여 반환한다. 날짜 형식은 날짜/시간 형식 1을 참고한다.

Parameters:
  • string – 문자열

  • formatDATE 타입으로 변환할 값의 형식을 지정하며, 날짜/시간 형식 1 표를 참고한다. 값이 NULL이면 결과로 NULL이 반환된다.

  • date_lang_string_literal – 입력 값에 적용할 언어를 지정한다.

Return type:

DATE

format 인자가 지정되면 지정한 언어에 맞는 형식으로 string 을 해석한다. 이때 언어는 date_lang_string_literal 인자에 의해 정해진다. date_lang_string_literal 인자가 생략되면 intl_date_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_date_lang 값의 설정이 생략되면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 string 이 “12.mai.2012”이고 format 이 “DD.mon.YYYY”인 경우 “2012년 5월 12일”로 해석한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

format 인자가 생략되면 먼저 CUBRID 기본 형식(날짜/시간 타입 문자열 권장 형식 참고)에 따라 string을 해석하고, 실패하는 경우 intl_date_lang에 의해 설정된 언어의 기본 출력 형식(날짜/시간 타입에 대한 언어별 기본 출력 형식 표 참고)에 따라 string을 해석한다. intl_date_lang이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 DATE 타입에 대해 허용하는 문자열은 CUBRID 기본 형식인 “MM/DD/YYYY”과 “de_DE” 기본 형식인 “DD.MM.YYYY”이다.

다음은 DB 생성 시 로캘을 “en_US.utf8”로 설정하여 수행하는 예이다.

--selecting a date type value casted from a string in the specified format

SELECT TO_DATE('12/25/2008');
12/25/2008
SELECT TO_DATE('25/12/2008', 'DD/MM/YYYY');
12/25/2008
SELECT TO_DATE('081225', 'YYMMDD');
12/25/2008
SELECT TO_DATE('2008-12-25', 'YYYY-MM-DD');
12/25/2008

다음은 intl_date_lang 의 값이 “de_DE”일 때 TO_DATE를 수행하는 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT TO_DATE('25.12.2012');
12/25/2012
SELECT TO_DATE('12/mai/2012','dd/mon/yyyy', 'de_DE');
05/12/2012

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

TO_DATETIME

TO_DATETIME(string[, format[, date_lang_string_literal]])

TO_DATETIME 함수는 인자로 지정된 DATETIME 형식을 기준으로 문자열을 해석하여, 이를 DATETIME 타입의 값으로 변환하여 반환한다. DATETIME 형식은 TO_CHAR() 함수의 날짜/시간 형식 1을 참고한다.

Parameters:
  • string – 문자열

  • format – DATETIME 타입으로 변환할 값의 형식을 지정하며, 날짜/시간 형식 1을 참고한다. 값이 NULL 이면 결과로 NULL 이 반환된다.

  • date_lang_string_literal – 입력 값에 적용할 언어를 지정한다.

Return type:

DATETIME

format 인자가 지정되면 지정한 언어에 맞는 형식으로 string 을 해석한다.

예를 들어 언어가 “de_DE”일 때 string이 “12/mai/2012 12:10:00 Nachm.”이고 format이 “DD/MON/YYYY HH:MI:SS AM”인 경우 “2012년 5월 12일 오후 12시 10분 0초”로 해석한다. 이때 언어는 date_lang_string_literal 인자에 의해 정해진다. date_lang_string_literal 인자가 생략되면 intl_date_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_date_lang 값의 설정이 생략되면 DB 생성 시 지정한 언어가 적용된다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

format 인자가 생략되면 먼저 CUBRID 기본 형식(날짜/시간 타입 문자열 권장 형식 참고)에 따라 string을 해석하고, 실패하는 경우 intl_date_lang에 의해 설정된 언어의 기본 출력 형식(날짜/시간 타입에 대한 언어별 기본 출력 형식 표 참고)에 따라 string을 해석한다. intl_date_lang이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 DATETIME 타입에 대해 허용하는 문자열은 CUBRID 기본 형식인 “HH:MI:SS.FF AM MM/DD/YYYY”와 “de_DE” 기본 형식인 “HH24:MI:SS.FF DD.MM.YYYY”이다.

Note

CUBRID 9.0 미만 버전에서 사용되었던 CUBRID_DATE_LANG 환경 변수는 더 이상 사용되지 않는다.

다음은 DB 생성 시 로캘을 “en_US”로 설정하여 생성된 데이터베이스에서 수행하는 예이다.

--selecting a datetime type value casted from a string in the specified format

SELECT TO_DATETIME('13:10:30 12/25/2008');
01:10:30.000 PM 12/25/2008
SELECT TO_DATETIME('08-Dec-25 13:10:30.999', 'YY-Mon-DD HH24:MI:SS.FF');
01:10:30.999 PM 12/25/2008
SELECT TO_DATETIME('DATE: 12-25-2008 TIME: 13:10:30.999', '"DATE:" MM-DD-YYYY "TIME:" HH24:MI:SS.FF');
01:10:30.999 PM 12/25/2008

다음은 intl_date_lang 의 값이 “de_DE”일 때 수행한 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT TO_DATETIME('13:10:30.999 25.12.2012');
01:10:30.999 PM 12/25/2012
SELECT TO_DATETIME('12/mai/2012 12:10:00 Nachm.','DD/MON/YYYY HH:MI:SS AM', 'de_DE');
12:10:00.000 PM 05/12/2012

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

TO_DATETIME_TZ

TO_DATETIME_TZ(string[, format[, date_lang_string_literal]])

TO_DATETIME_TZ 함수는 입력 문자열에 타임존 정보를 포함할 수 있다는 점을 제외하고는 TO_DATETIME() 함수와 동일하다.

Return type:

DATETIMETZ

SELECT TO_DATETIME_TZ('13:10:30 Asia/Seoul 12/25/2008', 'HH24:MI:SS TZR MM/DD/YYYY');
01:10:30.000 PM 12/25/2008 Asia/Seoul

TO_NUMBER

TO_NUMBER(string[, format])

TO_NUMBER 함수는 인자로 지정된 숫자 형식을 기준으로 문자열을 해석하여, 이를 NUMERIC 타입으로 변환하여 반환한다.

Parameters:
  • string – 문자열을 반환하는 임의의 연산식이다. 값이 NULL이면 결과로 NULL이 반환된다.

  • format – 숫자로 반환할 값의 형식을 지정하며, 숫자 형식 표를 참고한다. 생략되면 NUMERIC(38,0) 값이 리턴된다.

Return type:

NUMERIC

format 인자가 지정되면 지정한 언어에 맞는 형식으로 string 을 해석한다. 이때 언어는 intl_number_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_number_lang 값의 설정이 생략되면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”나 “fr_FR”과 같은 유럽 국가의 언어이면 “.”를 숫자의 자릿수 구분 기호로 해석하고 “,”를 소수점 기호로 해석한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

format 인자가 생략되면 intl_number_lang에 의해 설정된 언어의 기본 출력 형식을 따라 string 을 해석한다(언어별 숫자의 기본 출력 표 참고). intl_number_lang이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

다음은 시스템 파라미터 intl_number_lang 의 값이 “en_US”일 때 수행한 예이다.

SET SYSTEM PARAMETERS 'intl_number_lang="en_US"';

--selecting a number casted from a string in the specified format
SELECT TO_NUMBER('-1234');
-1234
SELECT TO_NUMBER('12345','999999');
12345
SELECT TO_NUMBER('12,345.67','99,999.999');
12345.670
SELECT TO_NUMBER('12345.67','99999.999');
12345.670

다음은 시스템 파라미터 intl_number_lang 의 값을 “de_DE”로 설정하여 실행한 예이다. 독일, 프랑스 등 유럽 국가에서는 숫자의 자릿수 구분 기호로 마침표가 사용되며, 소수점 기호로 쉼표가 사용된다.

SET SYSTEM PARAMETERS 'intl_number_lang="de_DE"';
SELECT TO_NUMBER('12.345,67','99.999,999');
12345.670

TO_TIME

TO_TIME(string[, format[, date_lang_string_literal]])

TO_TIME 함수는 인자로 지정된 시간 형식을 기준으로 문자열을 해석하여, 이를 TIME 타입의 값으로 변환하여 반환한다. 시간 형식은 날짜/시간 형식 1을 참고한다.

Parameters:
  • string – 문자열을 반환하는 임의의 연산식이다. 값이 NULL이면 결과로 NULL이 반환된다.

  • format – TIME 타입으로 변환할 값의 형식을 지정하며, 날짜/시간 형식 1 표를 참고한다. 값이 NULL 이면 결과로 NULL 이 반환된다.

  • date_lang_string_literal – 입력 값에 적용할 언어를 지정한다.

Return type:

TIME

format 인자가 지정되면 지정한 언어에 맞는 형식으로 string 을 해석한다. 이때 언어는 date_lang_string_literal 인자에 의해 정해진다. date_lang_string_literal 인자가 생략되면 intl_date_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_date_lang 값의 설정이 생략되면 DB 생성 시 지정한 언어가 적용된다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

예를 들어 언어가 “de_DE”일 때 string 이 “10:23:00 Nachm.”이고 format 이 “HH:MI:SS AM”인 경우 “오후 10시 23분 0초”로 해석한다.

format 인자가 생략되면 먼저 CUBRID 기본 형식(날짜/시간 타입 문자열 권장 형식 참고)에 따라 string을 해석하고, 실패하는 경우 intl_date_lang에 의해 설정된 언어의 기본 출력 형식(날짜/시간 타입에 대한 언어별 기본 출력 형식 표 참고)에 따라 string을 해석한다. intl_date_lang이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 TIME 타입에 대해 허용하는 문자열은 CUBRID 기본 형식인 “HH:MI:SS AM”과 “de_DE” 기본 형식인 “HH24:MI:SS”이다.

Note

CUBRID 9.0 미만 버전에서 사용되었던 CUBRID_DATE_LANG 환경 변수는 더 이상 사용되지 않는다.

다음은 시스템 파라미터 intl_date_lang 의 값이 “en_US”일 때 수행한 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="en_US"';

--selecting a time type value casted from a string in the specified format

SELECT TO_TIME ('13:10:30');
01:10:30 PM
SELECT TO_TIME('HOUR: 13 MINUTE: 10 SECOND: 30', '"HOUR:" HH24 "MINUTE:" MI "SECOND:" SS');
01:10:30 PM
SELECT TO_TIME ('13:10:30', 'HH24:MI:SS');
01:10:30 PM
SELECT TO_TIME ('13:10:30', 'HH12:MI:SS');
ERROR: Conversion error in date format.

다음은 intl_date_lang 의 값이 “de_DE”일 때 수행하는 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT TO_TIME('13:10:30');
01:10:30 PM
SELECT TO_TIME('10:23:00 Nachm.', 'HH:MI:SS AM');
10:23:00 PM

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

TO_TIMESTAMP

TO_TIMESTAMP(string[, format[, date_lang_string_literal]])

TO_TIMESTAMP 함수는 인자로 지정된 타임스탬프 형식을 기준으로 문자열을 해석하여, 이를 TIMESTAMP 타입의 값으로 변환하여 반환한다. 타임스탬프 형식은 날짜/시간 형식 1을 참고한다.

Parameters:
  • string – 문자열을 반환하는 임의의 연산식이다. 값이 NULL이면 결과로 NULL이 반환된다.

  • format – TIMESTAMP 타입으로 변환할 값의 형식을 지정하며, 날짜/시간 형식 1 표를 참고한다. 값이 NULL 이면 결과로 NULL 이 반환된다.

  • date_lang_string_literal – 입력 값에 적용할 언어를 지정한다.

Return type:

TIMESTAMP

format 인자가 지정되면 지정한 언어에 맞는 형식으로 string 을 해석한다. 이때 언어는 date_lang_string_literal 인자에 의해 정해진다. date_lang_string_literal 인자가 생략되면 intl_date_lang 시스템 파라미터에 지정한 언어가 적용되며, intl_date_lang 값의 설정이 생략되면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 string 이 “12/mai/2012 12:10:00 Nachm.”이고 format 이 “DD/MON/YYYY HH:MI:SS AM”인 경우 “2012년 5월 12일 오후 12시 10분 0초”로 해석한다. 주어진 문자열과 대응하지 않는 format 인자가 지정되면 에러를 반환한다.

format 인자가 생략되면 먼저 CUBRID 기본 형식(날짜/시간 타입 문자열 권장 형식 참고)에 따라 string을 해석하고, 실패하는 경우 intl_date_lang에 의해 설정된 언어의 기본 출력 형식(날짜/시간 타입에 대한 언어별 기본 출력 형식 표 참고)에 따라 string을 해석한다. intl_date_lang이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다.

예를 들어 언어가 “de_DE”일 때 TIMESTAMP 타입에 대해 허용하는 문자열은 CUBRID 기본 형식인 “HH:MI:SS AM MM/DD/YYYY”와 “de_DE” 기본 형식인 “HH24:MI:SS DD.MM.YYYY”이다.

다음은 시스템 파라미터 intl_date_lang 의 값이 “en_US”일 때 수행한 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="en_US"';

--selecting a timestamp type value casted from a string in the specified format

SELECT TO_TIMESTAMP('13:10:30 12/25/2008');
01:10:30 PM 12/25/2008
SELECT TO_TIMESTAMP('08-Dec-25 13:10:30', 'YY-Mon-DD HH24:MI:SS');
01:10:30 PM 12/25/2008
SELECT TO_TIMESTAMP('YEAR: 2008 DATE: 12-25 TIME: 13:10:30', '"YEAR:" YYYY "DATE:" MM-DD "TIME:" HH24:MI:SS');
01:10:30 PM 12/25/2008

다음은 intl_date_lang 의 값이 “de_DE”일 때 수행한 예이다.

SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"';
SELECT TO_TIMESTAMP('13:10:30 25.12.2008');
01:10:30 PM 12/25/2008
SELECT TO_TIMESTAMP('10:23:00 Nachm.', 'HH12:MI:SS AM');
10:23:00 PM 08/01/2012

Note

문자셋이 ISO-8859-1인 경우 “en_US” 외에 시스템 파라미터 intl_date_lang에 의해 변경할 수 있는 언어는 “ko_KR”과 “tr_TR”뿐이다. 문자셋이 UTF-8인 경우 CUBRID가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 TO_CHAR()Note를 참고한다.

TO_TIMESTAMP_TZ

TO_TIMESTAMP_TZ(string[, format[, date_lang_string_literal]])

TO_TIMESTAMP_TZ 함수는 입력 문자열에 타임존 정보를 포함할 수 있다는 점을 제외하고는 TO_TIMESTAMP() 함수와 동일하다.

rtype:

TIMESTAMPTZ

SELECT TO_TIMESTAMP_TZ('13:10:30 Asia/Seoul 12/25/2008', 'HH24:MI:SS TZR MM/DD/YYYY');
01:10:30 PM 12/25/2008 Asia/Seoul