Superkkt Blog

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은 단순히 초 단위로 변환해서 저장한다.
2009/09/19 16:41 2009/09/19 16:41

trackbacks

trackbacks rss

이 글에는 트랙백을 보낼 수 없습니다

Leave a Comment