知识点记录源自JavaGuide哥的文章。
1.千万不要用字符串格式存储时间
缺点:占用空间大、比较效率低,无法用日期相关的API进行计算和比较。
2.DateTime和Timestamp抉择
- DateTime没有时区信息,一旦时区更换,时间就会发生错误。
Timestamp和时区有关。会随服务器时区的变化而变化。
一些常用的sql命令
# 查看当前会话时区
SELECT @@session.time_zone;
# 设置当前会话时区
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
# 数据库全局时区设置
SELECT @@global.time_zone;
# 设置全局时区
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
- DateTime耗费空间更大。
DateTime耗费8个字节
TimeStamp耗费4个字节,但是表示时间范围更小。
3.数值型的时间戳会不会更好?
缺点:数据可读性比较差。
优点:跨系统更方便;排序、比较等操作的效率更高。
《高性能MySQL》一文中推荐使用Timestamp