数据库存储时间

image

1 Datetime

Datetime是没有时区信息的,
DateTime 需要耗费 8 个字节的存储空间

DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

2 Timestamp

Timestamp 和时区有关。Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相
应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。

Timestamp 只需要使用 4 个字节的存储空间

Timestamp:1970-01-01 00:00:01 ~ 2037-12-31 23:59:59

3 时区的一些命令

# 查看当前会话时区
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';

4 数值时间戳

很多时候,我们也会使用 int 或者 bigint 类型的数值也就是时间戳来表示时间。
这种存储方式的具有 Timestamp 类型的所具有一些优点,并且使用它的进行日期排序以及对比等操作 的效率会更高,跨系统也很方便,毕竟只是存放的数值。缺点也很明显,就是数据的可读性太差了,你 无法直观的看到具体时间。

5其它

5-1- 不要用字符串存储时间

  1. 字符串占用的空间更大!
  2. 字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。
posted @ 2021-12-13 19:45  姚狗蛋  阅读(68)  评论(0编辑  收藏  举报