参考:
https://juejin.im/post/5e1d494a5188254c45778a14
不要使用字符串存储时间
问题:
字符串占用的空间更大
比较效率低(逐个字符比较),无法用日期相关的API进行计算
Datetime和Timestamp
一般来讲选择Timestamp,why?
从时区上:
Datetime类型保存的时间都是当前会话所设置的时区对应的时间,如果时区更换后,就会导致从数据库读取的时间有问题,而Timestamp是和时区有关的,他的值会随着时区的变化而变化(自动换算)
从耗费的空间上:
DateTime类型耗费的空间更大,DateTime使用8个字节的存储空间,而Timestamp使用4个字节,也同样导致一个问题,Timestamp能表示的最大时间比DateTime小
1
2DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Timestamp: 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59Timestamp 在不同版本的 MySQL 中有细微差别。
官方参考:
https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html https://dev.mysql.com/doc/refman/8.0/en/datetime.html
除此之外还可以使用int
和bigint
存储时间戳,对比和进行日期排序和对比等操作效率会更高,但是缺点也很明显,就是不能够直观的显示具体的时间,可读性差
其他
一些关于Mysql时区设置的常用命令
1 | # 查看当前会话时区 |