|
 |
데이터 정의 및 타입 - 날짜/시간 | |
|
|
1. 날짜/시간 데이터 타입의 정의와 특성 |
|
1) 정의 |
|
날짜-시간 데이터 타입은 날짜, 시간 혹은 이 두 가지를 모두 표현할 때 사용하는 데이터 타입으로, CUBRID는 다음과 같은 데이터 타입을 지원한다. |
|
DATE |
|
TIME |
|
TIMESTAMP |
|
2) 특성 |
|
범위와 해상도(Range and Resolution) |
|
시간 값의 표현은 기본적으로 24시간 시스템에 의하여 그 범위가 결정된다. 날짜는 그레고리력(Gregorian calendar)을 따른다. 이 두 제약점을 벗어나는 값이 날짜나 시간으로 입력되면 오류가 발생한다. DATE 중 연도 부분은 0과 9999 AD 사이에 들어야 한다. TIMESTAMP의 경우에는 연도 부분이 더 작은 범위를 갖는데, 구체적으로는 GMT로 1970년 1월 1일 0시0분0초부터 2038년 1월 19일 03시14분07초까지 저장할 수 있다. 날짜, 시간, 타임스탬프와 관련된 연산은 시스템의 반올림 시스템에 따라 결과가 달라질 수 있다. 이러한 경우, 시간과 타임스탬프는 가장 근접한 초를 최소 해상도로, 날짜는 가장 근접한 날짜를 최소 해상도로 하여 결정된다. |
|
변환(Coercion) |
|
날짜-시간 타입의 값은 서로 똑같은 항목을 가지고 있는 경우에만 서로 비교 가능하다. 결론적으로, 서로 다른 날짜-시간 타입 사이의 자동 변환은 지원되지 않는다. 명시적인 변환은 CAST 연산자를 이용하여 가능한데, 그것도 TIMESTAMP 타입의 값들 간에만 가능하다. |
|
2. DATE |
|
DATE 데이터 타입은 날짜, 월, 연도 등 세 부분으로 이루어진 값이다. DATE 리터럴은 문자 스트링으로 표현하는데, 키워드 DATE 뒤에 다음과 같은 형식으로 작성한다. |
|
|
mm은 월, dd는 날짜, 그리고 yyyy는 연도를 나타낸다. 만약, 연도 부분이 생략되면 현재 연도가 자동으로 지정된다. |
|
1) 참고 사항 |
|
모든 항목은 정수 형태로 입력되어야 한다. |
|
2) 예제 |
DATE '11/11/1994'는 '11/11/1994'로 저장된다. DATE '11/11'는 '11/11/2008'로 저장된다(연도가 생략되면 현재 연도가 자동으로 지정됨). | |
|
3. TIME |
|
TIME 데이터 타입은 시각, 분, 초 등 세 부분으로 이루어진 값이다. TIME 리터럴은 문자 스트링으로 표현하는데, 키워드 TIME 뒤에 다음과 같은 형식으로 작성한다. |
TIME 'hh:mm [:ss] [am | pm]' | |
|
hh는 시간, mm은 분, 그리고 ss는 초를 나타낸다. 만약, 초 부분이 생략되면 자동으로 0초로 지정된다. 시간은 자동으로 군 표준(military standard) 형식으로 변환할 수 있다. |
|
1) 참고 사항 |
|
모든 항목은 정수 형태로 입력되어야 한다. |
|
시간을 입력할 때에는 AM/PM 혹은 군 표준 형식에 관계 없이 둘 다 사용할 수 있으나, CSQL에 의하여 출력될 때에는 항상 AM/PM 형식을 사용한다. 군 표준 형식으로 입력할 때에도 AM/PM을 사용할 수 있는데, 주어진 시간 값을 AM/PM으로 변환했을 때 실제로 주어진 AM/PM과 일치할 경우에만 허용된다. |
|
모든 시간 값은 데이터베이스에는 군 표준 형식으로 저장되고, C API 함수인 db_time_decode를 이용하면 군 표준 형식으로 반환된다. |
|
2) 예제 |
TIME '1:15:45 pm'은 '01:15:45 PM'으로 간주된다. TIME '16:08:33 am'은 오류이다(주어진 시간 값과 AM/PM이 일치하지 않으므로 오류 발생). TIME '16:08:33 pm'은 '04:08:33 PM'으로 간주된다. TIME '1:15'는 '01:15:00 AM'으로 간주된다. | |
|
4. TIMESTAMP |
|
TIMESTAMP 데이터 타입은 날짜와 시간을 결합한 데이터 값을 표현한다. TIMESTAMP 구문은 아래와 같이 TIMESTAMP라는 키워드 뒤에 '날짜 시간' 혹은 '시간 날짜'의 문자 스트링로 표현한다. |
TIMESTAMP 'hh:mm [:ss] [am|pm] mm/dd [/yyyy]' TIMESTAMP 'mm/dd [/yyyy] hh:mm [:ss] [am|pm]' | |
|
1) 참고 사항 |
|
각 항목의 의미는 앞의 DATE, TIME에서 이미 소개한 바와 같은데 한 가지 다른 점은 TIMESTAMP에 허용되는 값의 범위는 GMT로 1970년 1월 1일 0시0분0초부터 2038년 1월 19일 03시14분07초까지라는 점이다. |
|
2) 예제 |
TIMESTAMP '01/31/1994 8:15:00 pm'은 '8:15:00 PM 01/31/1994'를 나타낸다. TIMESTAMP '16:08:33 am 1/1/1946'은 오류이다(주어진 시간 값과 AM/PM이 일치하지 않고 허용 가능 범위를 넘어서므로 오류 발생). | |
|