博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于MySQL中存储时间格式的问题
阅读量:4221 次
发布时间:2019-05-26

本文共 2335 字,大约阅读时间需要 7 分钟。

1、MySQL中存储存储时间的格式可以分为四种类型:

其中:

(1)、跟整数相关的两种(INT和BIGINT)

 (2)、MySQL内置的格式两种(TIMESTAMP和DATETIME)

2、关于整数相关的两种(INT和BIGINT):

UNSIGNED INT(32位)可以存储的数据大概是43亿,大概是10位,可以存储精确到秒的Unix时间,最大存储时间到2100年左右,所以足够存储,不需要用BIGINT UNSIGNED(64位)来存储(如果只是精确到秒)需要比INT多一倍的存储空间,即使我们指定了BIGINT(10),其实际的存储空间与BIGINT是一样的。

3、MySQL中内置的存储日期的类型有:

DATETIME(8个字节,即64位,显示的时间范围:1001年到9999年)和TIMESTAMP(4个字节,即32位,显示的时间范围:1970到2038年)

4、举例说明上述四种日期的用法:

CREATE TABLE tbl_tim_test(

    id int UNSIGNED NOT NULL AUTO_INCREMENT,

    name VARCHAR(5) NOT NULL,

    update_time int UNSIGNED,

    active_time datetime default NULL,

    create_time timestamp,

    PRIMARY KEY(id)

)ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

在上述的建表中timestamp会被自动设置为:

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

即timestamp会自动设置缺省时间值。

insert into tbl_tim_test values(1, "tim", 1484400134, "2017-01-14", "2017-01-14");

其中时间戳1484400134是精确到秒。如果插入毫秒级别就会数据Out of range value错误。

插入后的数据为:

mysql> select * from tbl_tim_test;

+----+------+-------------+---------------------+---------------------+

| id | name | update_time | active_time         | create_time         |

+----+------+-------------+---------------------+---------------------+

|  1 | tim  |  1484400134 | 2017-01-14 00:00:00 | 2017-01-14 00:00:00 |

+----+------+-------------+---------------------+---------------------+

即使没有输入小时分钟秒,也会自动补零,可以精确到秒级。

insert into tbl_tim_test values(1, "tim", 1484400134, "2017-01-14 12:0:0", "2017-01-14");

即使插入这样的数据MySQL也是可以解析的。

mysql> select * from tbl_tim_test;

+----+------+-------------+---------------------+---------------------+

| id | name | update_time | active_time         | create_time         |

+----+------+-------------+---------------------+---------------------+

|  1 | tim  |  1484400134 | 2017-01-14 00:00:00 | 2017-01-14 00:00:00 |

|  2 | tim  |  1484400134 | 2017-01-14 12:00:00 | 2017-01-14 00:00:00 |

+----+------+-------------+---------------------+---------------------+

以下这几种都是可以存储成上面的格式:

insert into tbl_tim_test values(2, "tim", 1484400134, "2017-01-14 12:0:01", "2017-01-14");

insert into tbl_tim_test values(4, "tim", 1484400134, "2017/01/14 12:0:01", "2017-01-14");

insert into tbl_tim_test values(5, "tim", 1484400134, "20170114", "2017-01-14");

insert into tbl_tim_test values(6, "tim", 1484400134, "20170114 ", "2017-01-14");

5、推荐日期格式使用MySQL内置的DATETIME,如果一定要用整数的话就用int unsigned,不要去用bigint。

转载地址:http://gmomi.baihongyu.com/

你可能感兴趣的文章
POJ 3087 解题报告
查看>>
POJ 2536 解题报告
查看>>
POJ 1154 解题报告
查看>>
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
常见的排序算法
查看>>
hdu 3460 Ancient Printer(trie tree)
查看>>
KMP
查看>>
poj 3863Business Center
查看>>
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
DRM in Android
查看>>
ARC MRC 变换
查看>>
Swift cell的自适应高度
查看>>
【linux】.fuse_hiddenXXXX 文件是如何生成的?
查看>>
【LKM】整合多个LKM为1个
查看>>
【Windows C++】调用powershell上传指定目录下所有文件
查看>>
Java图形界面中单选按钮JRadioButton和按钮Button事件处理
查看>>
小练习 - 排序:冒泡、选择、快排
查看>>