最近在看mysql的关于时间类型的源码,看到date和time两个类型,手册上说是3字节,但是在源码中程序如下:ulonglong TIME_to_ulonglong_date(const MYSQL_TIME *time)
{
  return (ulonglong) (time->year * 10000UL + time->month * 100UL + time->day);
}在最后存到数据中,我也感觉是4个字节(time类似)请高手指点到底是怎么存为3个字节的,具体的储存过程是什么,或者告诉我其源码在哪一个文件也行,万分感谢!!!

解决方案 »

  1.   

    在数据库的存储中是3个字节。DATE: A three-byte integer packed as DD + MM×32 + YYYY×16×32 TIME: A three-byte integer packed as DD×24×3600 + HH×3600 + MM×60 + SS 你上述程序中的是C的定义,在C中没有3字节的数据类型,所以在C程序中会用unsigned long来实现,也就是在你的程序内存中用4个字节.
      

  2.   

    mysql date
       unsigned int year, month, day, hour, minute, second;
        unsigned long second_part;
        char neg;
        int time_type;