建表语句如下:

create table strong_passwd_whitelist(
  id int unsigned not null auto_increment,
  email_id int unsigned not null default 0,
  update_date timestamp,
  create_date datetime not null default current_timestamp,
  primary key(id),
  key index_email_id(email_id)
) engine=innodb charset=utf8;

1、  timestamp占用4个字节;

  datetime占用8个字节;

2、  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;

  注意:timestamp存储时在超过存储范围的时候会报错

  

3、  timestamp默认支持not null default CURRENT_TIMESTAMP自动更新当前时间;

  datetime 在5.6版本后才支持,需要手动指定not null default CURRENT_TIMESTAMP;

  

4、  timestamp转成utc(世界标准时间)存储,查询再自动转回来;

  datetime原样存储

timestamp为啥只到2038?

先看看mysql如何存储的:

对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。底层表示是时间戳。什么是时间戳?

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至某一时间点的总秒数。

例如北京时间2018-12-08 00:00:00的时间戳是1544198400,就是指从北京时间1970-01-01 08:00:00到2018-12-08 00:00:00已经过去了1544198400秒。

MySQL的timestamp类型是4个字节,最大值是2的31次方减1,也就是2147483647,转换成北京时间就是2038-01-19 11:14:07

要想大于这个时间,就用datetime

datetime是常量,而timestamp受time_zone设置的影响,只有当将来可能 - 跨时区同步集群时,这才有意义。timestamp一般用于跟踪记录被更新的时间或创建时间.

基于项目考虑,以上因素不会影响到业务,所以果断换成datetime。

[MySQL] timestamp和datetime的区别的更多相关文章

  1. [MySQL] timestamp和datetime的区别和大坑

    1.timestamp占用4个字节;datetime占用8个字节2.timestamp范围1970-01-01 00:00:01.000000 到 2038-01-19 03:14:07.999999 ...

  2. TIMESTAMP和DATETIME的区别

    TIMESTAMP和DATETIME的区别 1. 存储空间不同 a) TIMESTAMP占用4个字节 b) DATETIME占用8个字节 2. 受时区影响 c) TIMESTAMP实际记录的是1970 ...

  3. MySQL时间格式TIMESTAMP和DATETIME的区别

    时区,timestamp会跟随设置的时区变化而变化,而datetime保存的是绝对值不会变化 自动更新,insert.update数据时,可以设置timestamp列自动以当前时间(CURRENT_T ...

  4. mysql TIMESTAMP与DATATIME的区别---转载加自己的看法

    from:http://lhdeyx.blog.163.com/blog/static/318196972011230113645715/ from:http://blog.csdn.NET/zht6 ...

  5. mysql 时间类型datetime与timestamp区别比较

    mysql 时间类型datetime与timestamp区别比较 相同点: 显示宽度和格式相同,显示宽度固定在19字符,格式为YYYY-MM-DD HH:MM:SS. 不同点: (1)时间范围不同: ...

  6. 【记录】mysql中建表utf8和utf8mb4区别?timestamp和datetime区别?

    mysql中建表utf8和utf8mb4区别? 1:utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面 2:要在 Mysql 中 ...

  7. Mysql - date、datetime、timestamp 的区别

    date.datetime 的区别 顾名思义,date 日期,datetime 日期时间,所以 date 是 datetime 的日期部分 MySQL 以 YYYY-MM-DD hh:mm:ss 格式 ...

  8. MySQL中有关TIMESTAMP和DATETIME的总结

    一.MySQL中如何表示当前时间? 其实,表达方式还是蛮多的,汇总如下: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME ...

  9. MySQL中的datetime与timestamp比较-------转载

    原文地址http://database.51cto.com/art/200905/124240.htm MySQL中的datetime与timestamp比较 本文将通过实例比较MySQL中的date ...

随机推荐

  1. 本地Linux备份服务器[Client]定期备份云服务器[Server]上的文件(下)

    https://www.cnblogs.com/kevingrace/p/5972563.html Client上使用rsync命令查看服务器上文件列表rsync --list-only -e &qu ...

  2. python使用telnetlib

    python使用telnetlib 1 前言 目前,本篇仅记录前段时间搜索得到的关于python使用Telnet的技术博客,由于受领新任务,未进一步验证和深入研究与应用. 参考链接: python官网 ...

  3. 2018-2019-2 网络对抗技术 20165321 Exp1 PC平台逆向破解

    1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序 ...

  4. Windows 10安装Docker 步骤及顺序

    最近在工作中,重新安装Docker时,遇到了一点坑,故将自己解决经验分享一下~ Hardware assisted virtualization and data execution protecti ...

  5. asp.net无限递归

    private void button1_Click(object sender, EventArgs e) { DialogResult dialogResult = folderBrowserDi ...

  6. MyEclipse的JPA实现集成EasyJF+Spring

    该视频是演示MyEclipse的JPA实现集成EasyJF+Spring的示例视频.演示项目很小,仅实现基本的查询功能. 演示过程中难免有误,请各位朋友热心指导! gh发给梵蒂冈地方fgh

  7. codeforces-2

    B.chocolates #include<iostream> #include<algorithm> #include<string.h> long long b ...

  8. web攻击之xss(一)

    1,xss简介 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击 ...

  9. URLConnection类详解-转

    转-http://www.cnblogs.com/shijiaqi1066/p/3753224.html 1. URLConnection概述 URLConnection是一个抽象类,表示指向URL指 ...

  10. FileFilter过滤器

    FileFilter过滤器原理: File对象的listFiles()方法做了三件事情: 第一件,遍历得到所有的文件/文件夹: 第二件,调用入参过滤器接口自己DIY的实现类中重写的accept()方法 ...