【mysql】时间类型-如何根据不同的应用场景,选择合适的时间类型?

时间:2019-10-09
本文章向大家介绍【mysql】时间类型-如何根据不同的应用场景,选择合适的时间类型?,主要包括【mysql】时间类型-如何根据不同的应用场景,选择合适的时间类型?使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

首先为了解决这个问题,应当先了解mysql有哪些存储时间类型,每种类型的的使用场景以及用法。

一些帮助理解的资料:

摘自:MySQL如何存储时间datetime还是timestamp

时间存储

时间存储是我们在MySQL中最常用的一种存储类型,MySQL为我们提供了timestamp和datetime两种数据类型,那么这两者有什么区别,又该如何进行选择呢

timestamp和datetime的区别

  1. datetime的默认值为null,timestamp默认值为当前系统时间
  2. datetime占用8个字节,timestamp占用4个字节
  3. datetime存的什么读出来就是什么,timestamp存储的时候会转为utc存储,读出的时候也会转换成当前时区
  4. timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。datetime所能存储的时间范围为:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。

如何选择

  • 如果时间范围超过2038年,那自然选择datetime
  • 如果希望跨时区存储不同地区时间,也选择datetime
  • timestamp适合用于记录字段最后更新时间(老版本mysql,新版本datetime也可以支持)

有了上面这些面mysql字段的了解,我决定选择可读性比较好的datetime类型

Datetime格式使用方法如下:

日期和时间的组合,存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59',并且允许使用字符串或数字进行分配值。

例如:

update sys_tables set crt_date = 12331212121212 where table_name = 'sys_dict';
update sys_tables set crt_date = '1233-12-12 12:12:12' where table_name = 'sys_dict_item';

把mysql中的时间类型介绍很清楚的1篇文章:

MySQL中日期和时间类型

原文地址:https://www.cnblogs.com/kaerxifa/p/11640048.html