DATE - Storage: 3 byte integer, low byte first. Packed as: 'day + month*32 + year*16*32'
- Example: a
DATE column containing '1962-01-02' looks like: hexadecimal 22 54 0F
TIME
- Storage: 3 bytes, low byte first. This is stored as seconds: days*24*3600+hours*3600+minutes*60+seconds
- Example: a
TIME column containing '1 02:03:04' (1 day 2 hour 3 minutes and 4 seconds) looks like: hexadecimal 58 6E 01
MySQL Internals의 MyISAM 포맷 부분에서 발췌한 내용이다. DATE 타입을 저장하는 부분은 비트연산으로 표현하면 다음과 같다.
date = year << 9 + month << 5 + day
이는 day 값이 최대 31로 하위 5비트를 사용하고, month가 최대 12로 그 다음 4비트를 사용하며, 나머지 15 비트는 year가 최대 32768까지 사용한다.
그리고 TIME은 단순히 초 단위로 변환해서 저장한다.

comments
comments rss (+댓글 쓰러가기)