산술 연산

날짜/시간 타입 피연산자

날짜/시간 타입의 피연산자가 '-' 연산자에 주어지고 타입이 서로 다르면, 두 타입을 비교하여 우선순위가 높은 쪽의 타입으로 변환된다. 다음 예는 왼쪽 피연산자의 데이터 타입이 DATE에서 DATETIME으로 바뀌어 결과는 DATETIME의 '-' 연산 결과인 밀리초를 출력한다.

SELECT date'2002-01-01' - datetime'2001-02-02 12:00:00 am';

 

   date '2002-01-01'- datetime '2001-02-02 12:00:00 am'

=====================================================

                                          28771200000

수치형 타입 피연산자

수치형 타입의 피연산자가 주어지고 타입이 서로 다르면, 두 타입을 비교하여 우선순위가 높은 쪽의 타입으로 변환된다.

날짜/시간 타입과 수치형 타입 피연산자

날짜/시간 타입과 수치형 타입의 피연산자가 '+' 또는 '-' 연산자에 주어지면, 수치형 타입 피연산자는 BIGINT, INT, SHORT 중 하나로 변환된다.

날짜/시간 타입과 문자열 타입 피연산자

날짜/시간 타입과 문자열 타입이 피연산자이면, '+'와 '-' 연산자만 허용한다. '+' 연산자가 사용되면 다음 규칙이 적용된다.

SELECT date'2002-01-01' + '10';

 

  date '2002-01-01'+'10'

======================

  01/11/2002

날짜/시간 타입과 문자열 타입이 피연산자이고, '-' 연산자가 사용되면 다음 규칙이 적용된다.

SELECT date'2002-01-01'-'2001-01-01';

 

  date '2002-01-01'-'2001-01-01'

================================

                    31536000000

 

-- this causes an error

 

SELECT date'2002-01-01'-'10';

 

 In line 1, column 13,

 ERROR: Cannot coerce '10' to type datetime.    

 

수치형 타입과 문자열 타입 피연산자

수치형 타입과 문자열 타입이 피연산자이면 다음 규칙이 적용된다.

SELECT 4 + '5.2';

 

                4+'5.2'

==========================

  9.199999999999999e+00

CUBRID 2008 R3.1 이하 버전과 달리, 날짜/시간 형태의 문자열, 즉  '2010-09-15'와 같은 문자열은 날짜/시간 타입으로 변환되지 않는다. 날짜/시간 타입을 갖는 리터럴(DATE'2010-09-15')은 덧셈, 뺄셈 연산에 사용할 수 있다.

SELECT '2002-01-01'+1;

   ERROR: Cannot coerce '2002-01-01' to type double.

SELECT DATE'2002-01-01'+1;

  date '2002-01-01'+1

=====================

  01/02/2002

문자열 타입 피연산자

두 문자열을 곱하거나 나누거나 빼면 숫자로 변환되며, 결과로 DOUBLE 타입의 값을 반환한다.

SELECT '3'*'2';

 

                     '3'*'2'

============================

       6.000000000000000e+00

'+' 연산자의 동작은 cubrid.conf의 시스템 파라미터인 plus_as_concat을 어떻게 설정하느냐에 따라 결정된다. 자세한 내용은 구문/타입 관련 파라미터를 참고한다.

해당 타입으로 변환할 수 없으면 오류를 반환한다.