• ADADADADAD

    MYSQL中怎么利用DATE实现数据类型存储[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:24:39

    作者:文/会员上传

    简介:

    MYSQL-数据类型存储-DATE on Engine of myisam[@more@]1. 环境版本: OS : LINUX AS4 MYSQL: 5.0.51a-logENGINE : Myisam DEFAULT CHARSET=latin12. 分析date 类型共占3个字

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MYSQL-数据类型存储-DATE on Engine of myisam[@more@]

    1. 环境版本:
    OS : LINUX AS4
    MYSQL: 5.0.51a-log
    ENGINE : Myisam DEFAULT CHARSET=latin1

    2. 分析
    date 类型共占3个字节(24位),范围'1000-01-01'到'9999-12-31' , 格式'YYYY-MM-DD' ,
    其中:从左到右数
    1~15位: 存储年(共15位)
    16~19位: 存储月(共4位)
    20~24位: 存储日(共5位)

    比如," 2009-03-09",其中:

    十进制 十六进制 二进制
    -----------------------------------
    2009 -> 0X7D9 -> 000 0111 1101 1001
    03 -> 0X03 -> 0011
    09 -> 0X09 -> 01001
    -----------------------------------

    将二进制组合后: 0000 1111 1011 0010 0110 1001
    ------------------------------
    0 F B 2 6 9

    即十六进制: 0FB269

    注意:日期字段的数据是反向存储的.

    3. 验证

    下面我们可以来验证一下:

    drop table if exists heyf;
    create table heyf (id int ,birthday date) type myisam DEFAULT CHARSET=latin1;
    insert into heyf values (12,'2009-03-09');
    system hexdump /opt/mysql/data/test/heyf.MYD
    ----------------------------
    0000000 0cf9 0000 6900 0fb2
    0000008
    ----------------------------

    其中:
    f9 : 标志位
    0c 00 00 00 : COL1 ,INT = 12
    69 b2 0f : 即日期.由于是反向存储,所以需要反向读取:0FB269

    4. 相关函数

    4.1 十六进制转成十进制
    select 0xa +0 ;
    --------------------
    10

    select conv("a",16,10) ;
    --------------------
    10


    4.2 十进制转成十六进制

    select conv(10,10,16) ;
    --------------------
    A

    MYSQL中怎么利用DATE实现数据类型存储.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqldate