:meta-keywords: cubrid cast, cubrid type cast, cubrid date_format, cubrid to_char, cubrid to_date, cubrid to_datetime, cubrid to_datetime_tz, cubrid to_time, cubrid to_timestamp, cubrid to_timestamp_tz :tocdepth: 3 ****************************** 데이터 타입 변환 함수와 연산자 ****************************** .. contents:: CAST ==== .. function:: CAST (cast_operand AS cast_target) **CAST** 연산자를 **SELECT** 문에서 어떤 값의 데이터 타입을 다른 데이터 타입으로 명시적으로 변환하는 데 사용할 수 있다. 조회 리스트 또는 **WHERE** 절의 값 수식을 다른 데이터 타입으로 변환할 수 있다. :param cast_operand: 다른 타입으로 변환할 값을 선언한다. :param cast_target: 변환할 타입을 지정한다. :rtype: cast_target 경우에 따라 **CAST** 연산자를 쓰지 않고 데이터 타입이 자동으로 변환될 수 있다. 이에 대한 자세한 내용은 :ref:`implicit-type-conversion`\ 을 참고한다. 문자열을 날짜/시간 타입으로 변환하는 것에 대한 자세한 내용은 :ref:`cast-string-to-datetime` 을 참고한다. 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 ZONE** 및 **DATETIME WITH LOCAL TIME ZONE** 데이터 타입 * **UT**: **TIMESTAMP** * **UTZ**: **TIMESTAMP WITH TIME ZONE** 및 **TIMESTAMP WITH LOCAL TIME ZONE** 데이터 타입 * **S**: **SET** * **MS**: **MULTISET** * **SQ**: **LIST** (= **SEQUENCE**) .. code-block:: sql --operation after casting character as INT type returns 2 SELECT (1+CAST ('1' AS INT)); :: 2 .. code-block:: sql --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". .. code-block:: sql --operation after casting returns 1+1234567890 SELECT (1+CAST('1234567890' AS INT)); :: 1234567891 .. code-block:: sql --'1234.567890' is casted to 1235 after rounding up SELECT (1+CAST('1234.567890' AS INT)); :: 1236 .. code-block:: sql --'1234.567890' is casted to string containing only first 5 letters. SELECT (CAST('1234.567890' AS CHAR(5))); :: '1234.' .. code-block:: sql --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". .. code-block:: sql --numeric type can be casted to CHAR type only when enough length is specified SELECT (CAST(1234.567890 AS CHAR(11))); :: '1234.567890' .. code-block:: sql --numeric type can be casted to CHAR type only when enough length is specified SELECT (CAST(1234.567890 AS VARCHAR)); :: '1234.567890' .. code-block:: sql --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 .. code-block:: sql SELECT (CAST('10:30:20' AS TIME)); :: 10:30:20 AM .. code-block:: sql --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 .. code-block:: sql --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 .. code-block:: sql SELECT CAST('abcde' AS BLOB); :: file:/home1/user1/db/tdb/lob/ces_743/ces_temp.00001283232024309172_1342 .. code-block:: sql SELECT CAST(B'11010000' as varchar(10)); :: 'd0' .. code-block:: sql SELECT CAST('1A' AS BLOB); :: X'1a00' .. code-block:: sql --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 .. code-block:: sql --numbers cannot be casted to DATETIME type SELECT CAST (1 AS DATETIME); :: Cannot coerce 1 to type datetime .. code-block:: sql --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 =========== .. function:: DATE_FORMAT (date, format) **DATE_FORMAT** 함수는 날짜를 포함하는 날짜/시간 타입 값을 지정된 날짜/시간 형식의 문자열로 출력하며, 리턴 값은 **VARCHAR** 타입이다. 지정할 *format* 인자는 아래의 :ref:`날짜/시간 형식 2 ` 표를 참고한다. :ref:`날짜/시간 형식 2 ` 표는 :func:`DATE_FORMAT` 함수, :func:`TIME_FORMAT` 함수, :func:`STR_TO_DATE` 함수에서 사용된다. :param date: DATE, TIMESTAMP, DATETIME, DATETIMETZ, DATETIMELTZ, TIMESTAMPTZ, 또는 TIMESTAMPLTZ 타입의 값 :param format: 출력 형식을 지정한다. '%'로 시작하는 형식 지정자(specifier)를 사용한다. :rtype: STRING *format* 인자가 지정되면 지정된 언어에 맞는 형식으로 날짜를 출력한다. 이때 언어는 **intl_date_lang** 시스템 파라미터에 지정한 언어가 적용된다. **intl_date_lang**\ 이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다. 예를 들어 언어가 "de_DE"일 때 *format* 이 "%d %M %Y"인 경우 "2009년 10월 3일"인 날짜를 "3 Oktober 2009"인 문자열로 출력한다. 주어진 문자열과 대응하지 않는 *format* 인자가 지정되면 에러를 반환한다. 아래 :ref:`날짜/시간 형식 2 ` 표에서 월 이름, 요일 이름, 일 이름, 오전/오후 이름 등은 언어에 따라 다르다. .. _datetime-format2: **날짜/시간 형식 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 뒤에 숫자를 명시하는 포맷** :ref:`TZD 뒤에 숫자를 명시하는 포맷 `\을 참고한다. 다음은 시스템 파라미터 **intl_date_lang** 의 값이 "en_US"인 경우의 예이다. .. code-block:: sql SELECT DATE_FORMAT(datetime'2009-10-04 22:23:00', '%W %M %Y'); :: 'Sunday October 2009' .. code-block:: sql SELECT DATE_FORMAT(datetime'2007-10-04 22:23:00', '%H:%i:%s'); :: '22:23:00' .. code-block:: sql SELECT DATE_FORMAT(datetime'1900-10-04 22:23:00', '%D %y %a %d %m %b %j'); :: '4th 00 Thu 04 10 Oct 277' .. code-block:: sql SELECT DATE_FORMAT(date'1999-01-01', '%X %V'); :: '1998 52' 다음은 시스템 파라미터 **intl_date_lang** 의 값이 "de_DE"인 경우의 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"'; SELECT DATE_FORMAT(datetime'2009-10-04 22:23:00', '%W %M %Y'); :: 'Sonntag Oktober 2009' .. code-block:: sql SELECT DATE_FORMAT(datetime'2007-10-04 22:23:00', '%H:%i:%s %p'); :: '22:23:00 Nachm.' .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. 다음은 타임존 정보를 포함하는 DATETIMETZ 타입의 값을 원하는 형식에 맞게 문자열로 변환하여 출력하는 예제이다. .. code-block:: sql SELECT DATE_FORMAT(datetimetz'2012-02-02 10:10:10 Europe/Zurich CET', '%TZR %TZD %TZH %TZM'); :: 'Europe/Zurich CET 01 00' FORMAT ====== .. function:: FORMAT ( x , dec ) **FORMAT** 함수는 숫자 *x* 의 형식이 *#,###,###.#####* 이 되도록, 소수점 위 세 자리마다 자릿수 구분 기호로 구분하고 소수점 기호 아래 숫자가 *dec* 만큼 표현되도록 *dec* 의 아랫자리에서 반올림을 수행한 결과를 **VARCHAR** 타입으로 반환한다. :param x: 수치 값을 반환하는 임의의 연산식이다. :param dec: 소수점 이하 자릿수 :rtype: STRING 자릿수 구분 기호와 소수점 기호는 지정한 언어에 맞는 형식으로 출력한다. 이때 언어는 **intl_number_lang** 시스템 파라미터에 지정한 언어가 적용되며, **intl_number_lang** 값이 지정되지 않으면 DB 생성 시 지정한 언어가 적용된다. 예를 들어 언어가 "de_DE"나 "fr_FR"과 같은 유럽 국가의 언어이면 "."를 숫자의 자릿수 구분 기호로 해석하고 ","를 소수점 기호로 해석한다(:ref:`언어별 숫자의 기본 출력 ` 참고). 다음은 시스템 파라미터 **intl_number_lang** 의 값을 "en_US"로 설정하여 수행한 예이다. .. code-block:: sql 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"로 설정하여 생성한 데이터베이스에서 실행한 예이다. 독일, 프랑스 등 유럽 국가 대부분의 숫자 출력 형식은 "."가 자릿수 구분 기호이고, ","가 소수점 기호이다. .. code-block:: sql 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 =========== .. function:: STR_TO_DATE (string, format) **STR_TO_DATE** 함수는 인자로 주어진 문자열을 지정된 형식에 따라 해석하여 날짜/시간 값으로 변환하며, :func:`DATE_FORMAT` 함수와 반대로 동작한다. 리턴 값은 문자열에 포함된 날짜 또는 시간 부분에 따라 타입이 결정된다. :param string: 문자열 :param format: 문자열 해석을 위한 형식을 지정한다. %를 포함하는 문자열을 형식 지정자(specifier)로 사용한다. :func:`DATE_FORMAT` 함수의 :ref:`날짜/시간 형식 2 ` 표를 참고한다. :rtype: DATETIME, DATE, TIME, DATETIMETZ 지정할 *format* 인자는 :func:`DATE_FORMAT` 함수의 :ref:`날짜/시간 형식 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의 설정에 따라 동작이 달라진다. 이에 관한 자세한 내용은 :ref:`jdbc-connection-conf`\ 을 참고하면 된다. 다음은 시스템 파라미터 **intl_date_lang** 의 값이 "en_US"인 경우의 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_date_lang="en_US"'; SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y'); :: 05/01/2013 .. code-block:: sql SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y'); :: 05/01/2013 .. code-block:: sql SELECT STR_TO_DATE('13:30:17','%H:%i'); :: 01:30:00 PM .. code-block:: sql SELECT STR_TO_DATE('09:30:17 PM','%r'); :: 09:30:17 PM .. code-block:: sql SELECT STR_TO_DATE('0,0,0000','%d,%m,%Y'); :: 00/00/0000 다음은 시스템 파라미터 **intl_date_lang** 의 값이 "de_DE"인 경우의 예이다. 독일어 Oktober가 10월로 해석된다. .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. 다음은 타임존 정보를 포함하는 날짜/시간 문자열을 DATETIMETZ 타입으로 변환하는 예제이다. .. code-block:: sql 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 =========== .. function:: TIME_FORMAT (time, format) **TIME_FORMAT** 함수는 시간을 포함하는 날짜/시간 타입 값을 지정된 시간 형식의 문자열로 출력하며, 리턴 값은 **VARCHAR** 타입이다. :param time: 시간을 포함하는 타입(TIME, TIMESTAMP, DATETIME, TIMESTAMPTZ 또는 DATETIMETZ)의 값. :param format: 문자열 해석을 위한 형식을 지정한다. %를 포함하는 문자열을 형식 지정자(specifier)로 사용한다. :func:`DATE_FORMAT` 함수의 :ref:`날짜/시간 형식 2 ` 표를 참고한다. :rtype: 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"인 경우의 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_date_lang="en_US"'; SELECT TIME_FORMAT(time'22:23:00', '%H %i %s'); :: '22 23 00' .. code-block:: sql SELECT TIME_FORMAT(time'23:59:00', '%H %h %i %s %f'); :: '23 11 59 00 000' .. code-block:: sql SELECT SYSTIME, TIME_FORMAT(SYSTIME, '%p'); :: 08:46:53 PM 'PM' 다음은 시스템 파라미터 **intl_date_lang** 의 값이 "de_DE"인 경우의 예이다. .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. 다음은 타임존 정보를 포함하는 값을 명시한 포맷의 문자열로 출력하는 예이다. .. code-block:: sql 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) =================== .. function:: TO_CHAR ( date_time [, format[, date_lang_string_literal ]] ) **TO_CHAR** (date_time) 함수는 날짜/시간 타입 값을 :ref:`날짜/시간 형식 1 ` 표에 따라 문자열로 변환하여 이를 반환하며, 리턴 값의 타입은 **VARCHAR** 이다. :param date_time: 날짜/시간 타입(TIME, DATE, TIMESTAMP, DATETIME, DATETIMETZ, DATETIMELTZ, TIMESTAMPTZ, TIMESTAMPLTZ )의 값. :param format: 리턴 값의 형식 :param date_lang_string_literal: 리턴 값에 적용할 언어를 지정한다. :rtype: STRING *format* 인자가 지정되면 지정한 언어에 맞는 형식으로 *date_time* 을 출력한다. 자세한 형식은 :ref:`날짜/시간 형식 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*\ 을 문자열로 출력한다(아래 :ref:`날짜/시간 타입에 대한 언어별 기본 출력 형식` 표의 en_US 참고). .. note:: CUBRID 9.0 미만 버전에서 사용되었던 **CUBRID_DATE_LANG** 환경 변수는 더 이상 사용되지 않는다. .. _tochar-default-datetime-format: **날짜/시간 타입에 대한 언어별 기본 출력 형식** +-------+----------------+---------------+---------------------------+------------------------------+------------------------------+----------------------------------+ | 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' | +-------+----------------+---------------+---------------------------+------------------------------+------------------------------+----------------------------------+ .. _datetime-format1: **날짜/시간 형식 1** +-----------------------+-----------------------------------------------+ | format 값 | 의미 | +=======================+===============================================+ | **CC** | 세기(Century) | +-----------------------+-----------------------------------------------+ | **YYYY** | 4자리 연도, 2자리 연도 | | , **YY** | | +-----------------------+-----------------------------------------------+ | **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** | 시(1-12) | | 또는 **HH12** | | +-----------------------+-----------------------------------------------+ | **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은 타임존 타입에서만 사용 가능하다. .. _tzd-and-a-following-number: .. note:: **TZD 뒤에 숫자를 명시하는 포맷** TZD는 뒤에 숫자를 붙여서도 사용할 수 있다. TZD2~TZD11까지 사용할 수 있는데, 일반 문자를 문자열의 구분자로 사용하는 경우 숫자가 뒤따르는 포맷을 사용할 수 있다. .. code-block:: sql 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"로 설정하여 생성한 데이터베이스에서 수행한 예이다. .. code-block:: sql -- 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' .. code-block:: sql SELECT TO_CHAR(c, 'HH24:MI, DD, MONTH, YYYY') FROM datetime_tbl; :: '17:00, 20, AUGUST , 2013' .. code-block:: sql 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 ' .. code-block:: sql 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이어야 한다. .. code-block:: sql SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','ko_KR'); :: 'Iryoil 10wol 2009' .. code-block:: sql SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','tr_TR'); :: 'Pazar Ekim 2009' .. _tochar-remark: .. 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**\ 의 설명을 참고한다. .. code-block:: sql -- 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"로 지정하고 실행한 예이다. .. code-block:: sql SELECT TO_CHAR(TIMESTAMP'2009-10-04 22:23:00', 'Day Month yyyy','de_DE'); :: 'Sonntag Oktober 2009' * 첫번째 인자가 zerodate이고 두번째 인자에 'Month', 'Day'와 같은 리터럴 형식이 지정되면 TO_CHAR 함수는 NULL을 반환한다. .. code-block:: sql SELECT TO_CHAR(timestamp '0000-00-00 00:00:00', 'Month Day YYYY'); :: NULL 다음은 타임존 정보를 포함하는 날짜/시간 타입을 TO_CHAR 함수에서 출력하는 예이다. 형식을 정의하지 않으면 아래와 같은 순서로 출력된다. .. code-block:: sql 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' 형식을 정의하면 정의한 순서대로 출력된다. .. code-block:: sql 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) =============== .. function:: TO_CHAR(number[, format[, number_lang_string_literal ] ]) **TO_CHAR** (number) 함수는 수치형 데이터 타입을 :ref:`숫자 형식 `\ 에 맞는 문자열로 변환하여 **VARCHAR** 타입으로 반환한다. :param number: 숫자를 반환하는 수치형 데이터 타입의 연산식을 지정한다. 입력값이 NULL이면 결과로 NULL이 반환된다. 입력값이 문자열 타입이면 해당 문자열을 그대로 반환한다. :param format: 리턴 값의 형식을 지정한다. 값이 **NULL**\ 인 경우에는 **NULL**\ 이 반환된다. :param number_lang_string_literal: 입력 숫자를 출력할 때 적용할 언어를 지정한다. :rtype: 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* 를 문자열로 출력한다(:ref:`언어별 숫자의 기본 출력 ` 표 참고). .. _tochar-number-format: **숫자 형식** +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | 형식 구성 요소 | 예제 | 설명 | +===================+==========+===============================================================================================================================+ | **9** | 9999 | "9"의 개수는 반환될 유효숫자 자릿수를 나타낸다. | | | | 숫자 인자에 대해 형식에서 지정된 유효숫자 자릿수가 부족하면, 소수부에 대해서는 반올림 연산을 수행한다. | | | | 숫자 인자의 정수부 자릿수보다 유효숫자 자릿수가 부족하면 #을 출력한다. | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | **0** | 0999 | 형식에서 지정된 유효숫자 자릿수가 충분한 경우, 정수부 앞 부분을 공백이 아닌 0으로 채워 반환한다. | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | **S** | S9999 | 지정된 위치에 양수/음수 부호를 출력한다. 부호는 문자열의 시작부분에만 사용할 수 있다. | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | **C** | C9999 | 지정된 위치에 ISO 통화 기호를 반환한다. | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | **,** | 9,999 | 지정된 위치에 쉼표(",")를 반환한다. 언어의 설정에 따라 쓰임이 달라지는데, 자릿수 구분 기호로 사용될 경우 여러 개가 허용되며, | | (쉼표) | | 소수점 기호로 사용될 경우 한 개만 허용된다. :ref:`언어별 숫자의 기본 출력 ` 표 참고 | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | **.** | 9.999 | 지정된 위치에 마침표를 출력한다. 언어의 설정에 따라 쓰임이 달라지는데, 자릿수 구분 기호로 사용될 경우 여러 개가 허용되며, | | (마침표) | | 소수점 기호로 사용될 경우 한 개만 허용된다. :ref:`언어별 숫자의 기본 출력 ` 표 참고 | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ | **EEEE** | 9.99EEEE | 과학적 기수법(scientific notation)을 반환한다. | +-------------------+----------+-------------------------------------------------------------------------------------------------------------------------------+ .. _tochar-default-number-format: **언어별 숫자의 기본 출력** +--------------+------------+-------------------+-----------------+--------------------------+ | 언어 | 로캘 이름 | 자릿수 구분 기호 | 소수점 기호 | 숫자 표기 예 | +==============+============+===================+=================+==========================+ | 영어 | 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"로 설정하여 생성한 데이터베이스에서 수행한 예이다. .. code-block:: sql --selecting a string casted from a number in the specified format SELECT TO_CHAR(12345,'S999999'), TO_CHAR(12345,'S099999'); :: ' +12345' '+012345' .. code-block:: sql SELECT TO_CHAR(1234567,'9,999,999,999'); :: ' 1,234,567' .. code-block:: sql SELECT TO_CHAR(1234567,'9.999.999.999'); :: '#############' .. code-block:: sql 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"로 설정하고 수행한 예이다. 독일, 프랑스 등 유럽 국가 대부분의 숫자 출력 형식은 "."가 자릿수 구분 기호이고, ","가 소수점 기호이다. .. code-block:: sql 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' .. code-block:: sql SELECT TO_CHAR(1234567,'9,999,999,999'); :: '#############' .. code-block:: sql SELECT TO_CHAR(1234567,'9.999.999.999'); :: ' 1.234.567' .. code-block:: sql SELECT TO_CHAR(123.4567,'99'), TO_CHAR(123.4567,'999,99999'), TO_CHAR(123.4567,'99999,999'); :: '##' '123,45670' ' 123,457' .. code-block:: sql 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' .. code-block:: sql 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 ======= .. function:: TO_DATE(string [,format [,date_lang_string_literal]]) **TO_DATE** 함수는 인자로 지정된 날짜 형식을 기준으로 문자열을 해석하여, 이를 **DATE** 타입의 값으로 변환하여 반환한다. 날짜 형식은 :ref:`날짜/시간 형식 1 `\ 을 참고한다. :param string: 문자열 :param format: **DATE** 타입으로 변환할 값의 형식을 지정하며, :ref:`날짜/시간 형식 1 ` 표를 참고한다. 값이 **NULL**\ 이면 결과로 **NULL**\ 이 반환된다. :param date_lang_string_literal: 입력 값에 적용할 언어를 지정한다. :rtype: 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 기본 형식(:ref:`cast-to-datetime-recommend` 참고)에 따라 *string*\ 을 해석하고, 실패하는 경우 **intl_date_lang**\ 에 의해 설정된 언어의 기본 출력 형식(:ref:`날짜/시간 타입에 대한 언어별 기본 출력 형식 ` 표 참고)에 따라 *string*\ 을 해석한다. **intl_date_lang**\ 이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다. 예를 들어 언어가 "de_DE"일 때 **DATE** 타입에 대해 허용하는 문자열은 CUBRID 기본 형식인 "MM/DD/YYYY"과 "de_DE" 기본 형식인 "DD.MM.YYYY"이다. 다음은 DB 생성 시 로캘을 "en_US.utf8"로 설정하여 수행하는 예이다. .. code-block:: sql --selecting a date type value casted from a string in the specified format SELECT TO_DATE('12/25/2008'); :: 12/25/2008 .. code-block:: sql SELECT TO_DATE('25/12/2008', 'DD/MM/YYYY'); :: 12/25/2008 .. code-block:: sql SELECT TO_DATE('081225', 'YYMMDD'); :: 12/25/2008 .. code-block:: sql SELECT TO_DATE('2008-12-25', 'YYYY-MM-DD'); :: 12/25/2008 다음은 **intl_date_lang** 의 값이 "de_DE"일 때 **TO_DATE**\ 를 수행하는 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"'; SELECT TO_DATE('25.12.2012'); :: 12/25/2012 .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. TO_DATETIME =========== .. function:: TO_DATETIME (string [,format [,date_lang_string_literal]]) **TO_DATETIME** 함수는 인자로 지정된 **DATETIME** 형식을 기준으로 문자열을 해석하여, 이를 **DATETIME** 타입의 값으로 변환하여 반환한다. **DATETIME** 형식은 :func:`TO_CHAR` 함수의 :ref:`날짜/시간 형식 1 `\ 을 참고한다. :param string: 문자열 :param format: DATETIME 타입으로 변환할 값의 형식을 지정하며, :ref:`날짜/시간 형식 1 `\을 참고한다. 값이 **NULL** 이면 결과로 **NULL** 이 반환된다. :param date_lang_string_literal: 입력 값에 적용할 언어를 지정한다. :rtype: 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 기본 형식(:ref:`cast-to-datetime-recommend` 참고)에 따라 *string*\ 을 해석하고, 실패하는 경우 **intl_date_lang**\ 에 의해 설정된 언어의 기본 출력 형식(:ref:`날짜/시간 타입에 대한 언어별 기본 출력 형식 ` 표 참고)에 따라 *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"로 설정하여 생성된 데이터베이스에서 수행하는 예이다. .. code-block:: sql --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 .. code-block:: sql 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 .. code-block:: sql 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"일 때 수행한 예이다. .. code-block:: sql 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 .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. TO_DATETIME_TZ ============== .. function:: TO_DATETIME_TZ (string [,format [,date_lang_string_literal]]) **TO_DATETIME_TZ** 함수는 입력 문자열에 타임존 정보를 포함할 수 있다는 점을 제외하고는 :func:`TO_DATETIME` 함수와 동일하다. :rtype: DATETIMETZ .. code-block:: sql 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 ========= .. function:: TO_NUMBER(string [, format ]) **TO_NUMBER** 함수는 인자로 지정된 숫자 형식을 기준으로 문자열을 해석하여, 이를 **NUMERIC** 타입으로 변환하여 반환한다. :param string: 문자열을 반환하는 임의의 연산식이다. 값이 NULL이면 결과로 NULL이 반환된다. :param format: 숫자로 반환할 값의 형식을 지정하며, :ref:`숫자 형식 ` 표를 참고한다. 생략되면 NUMERIC(38,0) 값이 리턴된다. :rtype: NUMERIC *format* 인자가 지정되면 지정한 언어에 맞는 형식으로 *string* 을 해석한다. 이때 언어는 **intl_number_lang** 시스템 파라미터에 지정한 언어가 적용되며, **intl_number_lang** 값의 설정이 생략되면 DB 생성 시 지정한 언어가 적용된다. 예를 들어 언어가 "de_DE"나 "fr_FR"과 같은 유럽 국가의 언어이면 "."를 숫자의 자릿수 구분 기호로 해석하고 ","를 소수점 기호로 해석한다. 주어진 문자열과 대응하지 않는 *format* 인자가 지정되면 에러를 반환한다. *format* 인자가 생략되면 **intl_number_lang**\ 에 의해 설정된 언어의 기본 출력 형식을 따라 *string* 을 해석한다(:ref:`언어별 숫자의 기본 출력 ` 표 참고). **intl_number_lang**\ 이 설정되지 않으면 DB 생성 시 지정한 언어가 적용된다. 다음은 시스템 파라미터 **intl_number_lang** 의 값이 "en_US"일 때 수행한 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_number_lang="en_US"'; --selecting a number casted from a string in the specified format SELECT TO_NUMBER('-1234'); :: -1234 .. code-block:: sql SELECT TO_NUMBER('12345','999999'); :: 12345 .. code-block:: sql SELECT TO_NUMBER('12,345.67','99,999.999'); :: 12345.670 .. code-block:: sql SELECT TO_NUMBER('12345.67','99999.999'); :: 12345.670 다음은 시스템 파라미터 **intl_number_lang** 의 값을 "de_DE"로 설정하여 실행한 예이다. 독일, 프랑스 등 유럽 국가에서는 숫자의 자릿수 구분 기호로 마침표가 사용되며, 소수점 기호로 쉼표가 사용된다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_number_lang="de_DE"'; SELECT TO_NUMBER('12.345,67','99.999,999'); :: 12345.670 TO_TIME ======= .. function:: TO_TIME(string [,format [,date_lang_string_literal]]) **TO_TIME** 함수는 인자로 지정된 시간 형식을 기준으로 문자열을 해석하여, 이를 TIME 타입의 값으로 변환하여 반환한다. 시간 형식은 :ref:`날짜/시간 형식 1 `\ 을 참고한다. :param string: 문자열을 반환하는 임의의 연산식이다. 값이 NULL이면 결과로 NULL이 반환된다. :param format: TIME 타입으로 변환할 값의 형식을 지정하며, :ref:`날짜/시간 형식 1 ` 표를 참고한다. 값이 **NULL** 이면 결과로 **NULL** 이 반환된다. :param date_lang_string_literal: 입력 값에 적용할 언어를 지정한다. :rtype: 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 기본 형식(:ref:`cast-to-datetime-recommend` 참고)에 따라 *string*\ 을 해석하고, 실패하는 경우 **intl_date_lang**\ 에 의해 설정된 언어의 기본 출력 형식(:ref:`날짜/시간 타입에 대한 언어별 기본 출력 형식 ` 표 참고)에 따라 *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"일 때 수행한 예이다. .. code-block:: sql 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 .. code-block:: sql SELECT TO_TIME('HOUR: 13 MINUTE: 10 SECOND: 30', '"HOUR:" HH24 "MINUTE:" MI "SECOND:" SS'); :: 01:10:30 PM .. code-block:: sql SELECT TO_TIME ('13:10:30', 'HH24:MI:SS'); :: 01:10:30 PM .. code-block:: sql SELECT TO_TIME ('13:10:30', 'HH12:MI:SS'); :: ERROR: Conversion error in date format. 다음은 **intl_date_lang** 의 값이 "de_DE"일 때 수행하는 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"'; SELECT TO_TIME('13:10:30'); :: 01:10:30 PM .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. TO_TIMESTAMP ============ .. function:: TO_TIMESTAMP(string [, format [,date_lang_string_literal]]) **TO_TIMESTAMP** 함수는 인자로 지정된 타임스탬프 형식을 기준으로 문자열을 해석하여, 이를 **TIMESTAMP** 타입의 값으로 변환하여 반환한다. 타임스탬프 형식은 :ref:`날짜/시간 형식 1 `\ 을 참고한다. :param string: 문자열을 반환하는 임의의 연산식이다. 값이 NULL이면 결과로 NULL이 반환된다. :param format: TIMESTAMP 타입으로 변환할 값의 형식을 지정하며, :ref:`날짜/시간 형식 1 ` 표를 참고한다. 값이 **NULL** 이면 결과로 **NULL** 이 반환된다. :param date_lang_string_literal: 입력 값에 적용할 언어를 지정한다. :rtype: 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 기본 형식(:ref:`cast-to-datetime-recommend` 참고)에 따라 *string*\ 을 해석하고, 실패하는 경우 **intl_date_lang**\ 에 의해 설정된 언어의 기본 출력 형식(:ref:`날짜/시간 타입에 대한 언어별 기본 출력 형식 ` 표 참고)에 따라 *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"일 때 수행한 예이다. .. code-block:: sql 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 .. code-block:: sql SELECT TO_TIMESTAMP('08-Dec-25 13:10:30', 'YY-Mon-DD HH24:MI:SS'); :: 01:10:30 PM 12/25/2008 .. code-block:: sql 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"일 때 수행한 예이다. .. code-block:: sql SET SYSTEM PARAMETERS 'intl_date_lang="de_DE"'; SELECT TO_TIMESTAMP('13:10:30 25.12.2008'); :: 01:10:30 PM 12/25/2008 .. code-block:: sql 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가 지원하는 모든 언어 중 하나로 변경할 수 있다. 보다 자세한 설명은 :func:`TO_CHAR`\ 의 :ref:`Note `\ 를 참고한다. TO_TIMESTAMP_TZ =============== .. function:: TO_TIMESTAMP_TZ(string [, format [,date_lang_string_literal]]) **TO_TIMESTAMP_TZ** 함수는 입력 문자열에 타임존 정보를 포함할 수 있다는 점을 제외하고는 :func:`TO_TIMESTAMP` 함수와 동일하다. :rtype: TIMESTAMPTZ .. code-block:: sql 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