mysql中时间类型有哪些

mysql中时间类型有哪些

这篇文章将为大家详细讲解有关mysql中时间类型有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

时间类型的选用

时间字段类型可以选用datetime和timestamp,下面用一张表展示下二者的区别:

timestamp翻译为汉语即”时间戳”,它是当前时间到 Unix元年(1970 年 1 月 1 日 0 时 0 分 0 秒)的秒数,占用4个字节,而且是以UTC的格式储存,它会自动检索当前时区并进行转换。datetime以8个字节储存,不会进行时区的检索。也就是说,对于timestamp来说,如果储存时的时区和检索时的时区不一样,那么拿出来的数据也不一样。对于datetime来说,存什么拿到的就是什么。下面给出几个常见案例及选择建议。

  • 根据存储范围来选取,比如生产时间,保质期等时间建议选取datetime,因为datetime能存储的范围更广。

  • 记录本行数据的插入时间和修改时间建议使用timestamp。

  • 和时区相关的时间字段选用timestamp。

  • 如果只是想表示年、日期、时间的还可以使用 year、 date、 time,它们分别占据 1、3、3 字节,而datetime就是它们的集合。

如果timestamp字段经常用于查询,我们还可以使用MySQL内置的函数FROM_UNIXTIME()UNIX_TIMESTAMP(),将日期和时间戳数字来回转换,转换后可以用 INT UNSIGNED 存储时间,数字是连续的,占用空间更小,并且可以使用索引提升查询性能。下面给出示范建表语句及时间戳相关转换SQL:

CREATETABLE`tb_time`(`increment_id`intunsignedNOTNULLAUTO_INCREMENTCOMMENT'自增主键',`col1`datetimeNOTNULLDEFAULT'2020-10-0100:00:00'COMMENT'到期时间',`unix_createtime`intunsignedNOTNULLCOMMENT'创建时间戳',`create_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`update_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`increment_id`),KEY`idx_unix_createtime`(`unix_createtime`))ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='time测试表';#插入数据insertintotb_time(unix_createtime,create_time)values(UNIX_TIMESTAMP(now()),now());#时间戳数字与时间相互转换selectUNIX_TIMESTAMP('2020-05-0600:00:00')selectFROM_UNIXTIME(1588694400)

关于“mysql中时间类型有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

发布于 2022-03-18 22:49:27
收藏
分享
海报
0 条评论
33
上一篇:如何使用python generators 下一篇:avereps怎么按照相同ID取均值
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码