CUBRID 2008 R4.1 기초강좌
데이터 정의 및 타입 - 날짜/시간 0 0 51,747

by 큐브리드 DATE TIME TIMESTAMP [2009.03.20]


 
데이터 정의 및 타입 - 날짜/시간
 
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 뒤에 다음과 같은 형식으로 작성한다.
DATEmm/dd[/yyyy]’
 
mm은 월, dd는 날짜, 그리고 yyyy는 연도를 나타낸다. 만약, 연도 부분이 생략되면 현재 연도가 자동으로 지정된다.
 
1) 참고 사항
 
모든 항목은 정수 형태로 입력되어야 한다.
 
2) 예제
DATE ’11/11/1994’는 ’11/11/1994’로 저장된다.
DATE ’11/11’는 ’11/11/2008’로 저장된다(연도가 생략되면 현재 연도가 자동으로 지정됨).
 
3. TIME
 
TIME 데이터 타입은 시각, 분, 초 등 세 부분으로 이루어진 값이다. TIME 리터럴은 문자 스트링으로 표현하는데, 키워드 TIME 뒤에 다음과 같은 형식으로 작성한다.
TIMEhh: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라는 키워드 뒤에 ’날짜 시간’ 혹은 ’시간 날짜’의 문자 스트링로 표현한다.
TIMESTAMPhh: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이 일치하지 않고 허용 가능 범위를 넘어서므로 오류 발생).
 

- 강좌 URL : http://www.gurubee.net/lecture/2025

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입