首先为了解决这个问题,应当先了解mysql有哪些存储时间类型,每种类型的的使用场景以及用法。
一些帮助理解的资料:
摘自:MySQL如何存储时间datetime还是timestamp
时间存储
时间存储是我们在MySQL中最常用的一种存储类型,MySQL为我们提供了timestamp和datetime两种数据类型,那么这两者有什么区别,又该如何进行选择呢
timestamp和datetime的区别
- datetime的默认值为null,timestamp默认值为当前系统时间
- datetime占用8个字节,timestamp占用4个字节
- datetime存的什么读出来就是什么,timestamp存储的时候会转为utc存储,读出的时候也会转换成当前时区
- 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篇文章: