썩구노트

[MYSQL] 날짜와 시간 타입 (column type) 본문

DB

[MYSQL] 날짜와 시간 타입 (column type)

양석규 2016. 10. 27. 15:15

MySQL은 시간을 나타내는 타입을 여러 형태로 제공한다 날짜와 시간 타입은 함께 혹은 조합을 이루어 사용될 수 있다. 특별히 타임스탬프 타입이 있는데, 이것은 어떤 레코드가 변경될 때 자동으로 갱신되고, 완전한 날짜가 필요한 것이 아니라면, 연 단위의 기간을 저장하는데 사용되기도 한다.

날짜 포맷에서 CC,YY,MM 그리고 DD라고 표기되는 항목은 각각 세기, 연, 월 그리고 일을 나타낸다. 시간 포맷에서 bb,mm 그리고 ss는 각각 시,분, 그리고 초를 나타낸다.


DATE

의미 : 'CCYY-MM-DD'포맷으로 된 날의 값
허용되는 속성들 : 전역 속성 외에는 없다.
범위 : '1000-01-01' 부터 '9999-12-31'
영값 : '0000-00-00'
디폴트 값 : 칼럼이 NULL이 가능하면 NULL, 그렇지 않으면 '0000-00-00'
필요한 저장공간 : 3바이트


TIME

의미 : 'hh:mm:ss'포맷의 시간 값(음수 값으로는 '-hh:mm:ss')
허용되는 속성들 : 전역 속성 외에는 없다.
범위 : '-838:59:59' 부터 '838:59:59'
영값 : '00:00:00'
디폴트 값 : 칼럼이 NULL이 가능하면 NULL, 그렇지 않으면 '00:00:00'
필요한 저장공간 : 3바이트
주의사항 : TIME칼럼에 잘못된 값이 삽입될 때 영값으로 '00:00:00'이 사용되지만 그것또한 정상적인 칼럼 범위 안에 들어가는 제대로 된 값이 된다.


DATETIME

의미 : 날짜와 시간 값. 'CCYY-MM-DD hh:mm:ss' 포맷으로 된다.
허용되는 속성들 : 전역 속성 외에는 없다.
범위 : '1000-01-01 00:00:00' 부터 '9999-12-31 23:59:59'
영값 : '0000-00-00 00:00:00'
디폴트 값 : 칼럼이 NULL이 가능하면 NULL, 그렇지 않으면 '0000-00-00 00:00:00'
필요한 저장공간 : 8바이트


TIMESTAMP [ (M) ]

의미 : CCYYMMDDhhmmss 포맷의 타임스탬프값(날짜와 시간). 테이블의 어떤 TIMESTAMP 칼럼에 NULL값을 넣으면 현재의 날짜와 시간이 들어간다. 부가적으로 열 안의 어떤 다른 칼럼의 값을 바꾸면, 첫 번째의 TIMESTAMP 칼럼이 해당 수정이 발생한 시점의 날짜와 시간으로 갱신되어지게 된다. 값은 내부적으로 해당 표시 폭과는 상관없이 14문자 전체를 다 사용하는 정확도를 가지고 저장되고 계산에 사용된다.
가능한 속성 : 없음, 전역 속성
범위 : 19700101000000부터 2037년의 어떤 시간까지
영값 : 00000000000000
디폴트 값 : 테이블안의 첫 번째 TIMESTAMP 칼럼에 대한 현재의 날짜와 시간, 첫 번째가 아닌 경우에는 0. DESCRIBE와 SHOW COLUMNS는 TIMESTAMP 칼럼에 문자적인 NULL을 삽입할 수는 없지만 TIMESTAMP 칼럼에 대하여 NULL을 디폴트 값으로 보고한다. 이것은 새로운 레코드를 만들 때 NULL을 설정하면 현재의 날짜와 시간을 TIMESTAMP에 설정한다는것을 의미한다.
필요한 공간 : 4바이트
주의사항 : 속성으로 NULL이 지정되지 않으면 무시된다.


YEAR [ (M) ]

의미 : 연도값. M값을 쓴다면, 2또는 4로 해야 하는데, 2는 YY 포맷임을, 4는 CCYY 포맷임을 의미한다. 생략하면 M은 기본적으로 4가 된다.
가능한 속성 : 없음, 전역 속성에 따름
범위 : YEAR(4)이면 1901에서 2155까지와 0000. YEAR(2)이면 1970에서 2069까지이고 마지막 두 자리만 표시됨
영값 : YEAR(4)이면 0000, YEAR(2)이면 00
기본값 : 칼럼이 NULL이 가능하면 NULL이고, 그렇지 않으면 0000이나 00
필요한 저장공간 : 1바이트