mysql datetime与timestamp区别

mysql datetime与timestamp区别datetime:1、与时区无关,存入的是什么值就是什么值,不会根据当前时区进行转换2、从mysql5.6.4中,可以存储小数片段,最多到小数点后6位,显示时格式为yyyy-MM-ddHH:mm:ss[.222222]mysql5.5中,没有小数片段。所以,我再从5.6版本迁移到5.5版本时,因为生成的sql中datetime(6),所以无法导入数据库。3、存储

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

datetime: 

1、保存格式为YYYYMMDDHHMMSS(年月日时分秒)的整数,所以,它与时区无关,存入的是什么值就是什么值,不会根据当前时区进行转换。

2、从mysql 5.6.4中,可以存储小数片段,最多到小数点后6位,显示时格式为 yyyy-MM-dd HH:mm:ss[.222222]

      mysql5.5中,没有小数片段,精确到秒。所以,我再从5.6版本迁移到5.5时,因生成的sql中datetime(6)有小数片段,无法导入。

3、存储范围:从1000-01-01 00:00:00 到’9999-12-31 23:59:59′

4、长度,8个字节,datetime(n),n不是存储长度,而是显示的小数位数,即使小数位数是0,存储是也是存储的6位小数,仅仅显示0位而已;要想显示小数,设置datetime(n),n=3显示小数点后3位,毫秒,n=6显示小数点后6位,微秒。

timestamp:

1、存入的是自1970-01-01午夜(格林尼治标准时间)以来的秒数,它和unix时间戳相同。所以它与时区有关,查询时转为相应的时区时间。比如,存储的是1970-01-01 00:00:00,客户端是北京,那么就加8个时区的小时1970-01-01 08:00:00。

2、有小数片段,至少从5.5就开始有

3、存储范围:'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' 

4、可以当做时间戳使用,在更新时,自动更新,这一列只能由系统自动更新,不能由sql更新,这个在乐观锁时有广泛的应用

6、长度,4字节,因为存储长度的原因,决定了它支持的范围的比datetime的要小

7、显示时,显示日期和时间

datetime和timestamp都可以当作时间戳使用

datetime和timestamp都可以设置默认值,并且在其他列值更新时更新为当前时间,DEFAULT  CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP,这俩子句可以一起使用,顺序无所谓,一起使用的意思是,默认值是当前时间并且在其他列更新值时,此列更新为当前时间。

ALTER TABLE `mytest`.`date_time_test` 
CHANGE COLUMN `col2` `col2` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;

date

date,时分秒都存储了,但只显示日期。对应Java中的java.sql.Date

datetime与时区无关、timestamp与时区有关

1、查看当前时区,并创建表test_date,一个是timestamp列,一个是datetime列

mysql datetime与timestamp区别

2、插入两条数据,相同的时间。修改时区为0时区(格林尼治时区)后,查看时间,发现timestamp改变了,datetime没变。

mysql datetime与timestamp区别

总结

datetime、timestamp精确度都是秒,datetime与时区无关,存储的范围广(1001-9999),timestamp与时区有关,存储的范围小(1970-2038)。

MySQL :: MySQL 5.7 Reference Manual :: 11.2.2 The DATE, DATETIME, and TIMESTAMP Types

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215460.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云服务器怎么开放端口_云服务器开启端口

    阿里云服务器怎么开放端口_云服务器开启端口阿里云服务器如何开放端口,这里我将开放8082端口,我们来看下吧方法/步骤 登录阿里云服务器并进入控制台,点击【云服务器ECS】。 在【云服务器ECS】点击【实例】并跳转到实例列表。 在实例列表找到要开放端口的云服务器实例。并点击后面的【更多】–》【网络和安全组】–》【安全组配置】。 在【本实例安全组】内点击【配置规则】打开【安全组规则】。这里有出\入的方向,这里我开放的是8082端口,属于入方向的。在这里可以新增规则,这里为了方便直接对已有的规

    2022年10月2日
    0
  • origin怎么做多组柱状图_origin怎么对比两组数据

    origin怎么做多组柱状图_origin怎么对比两组数据1.数据点的横坐标不是等间距时的曲线绘制用实验数据作图时,会遇到数据点的横坐标不是等间距的情况,比如:X:1,3,4,8,9,12,…Y:10.2,10.5,11.4,11.8,10.9,10.2,…如果只有一组实验数据,则按照普通的方法在Worksheet中分别输入X,Y的值,然后用“线+符号”的方式绘图即可。但是,当有多组此种情况的数据需要绘制在一个图中时,例如:X1:1,3,4,8…

    2022年9月30日
    1
  • java环境变量_java环境变量

    java环境变量_java环境变量1.PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。2.CLASSPATH环境变量。…

    2022年7月7日
    19
  • Charles抓包安卓端

    Charles抓包安卓端Charles抓包安卓端电脑和手机须要在同一个WIFI下安装好CharlesAndroid手机一部->接下来会以(一加手机)测试1.打开Charles依次选择Proxy->ProxySettings…在这里插入图片描述2.安装需要的证书依次选择Help->SSLProxying->installCharlesRootCertif…

    2022年5月15日
    49
  • tomcat8和tomcat7性能比较「建议收藏」

    tomcat8和tomcat7性能比较「建议收藏」1.测试情况概述本次压测目标是tomcat8和tomcat7性能比较,压测场景是:用户注册场景(关闭日志),压测过程中,监测应用服务器和db服务器的资源使用情况,监测内存回收情况;同时监控各涉及系统的处理能力,判断tomcat8的性能是否优于tomcat7,是否满足现网实际业务需求. 压测目标 tomcat8和tomcat7性能比较,判断tomc…

    2022年7月18日
    44
  • Centos7安装Postgresql 13 详细步骤(远程连接)

    Centos7安装Postgresql 13 详细步骤(远程连接)

    2021年6月4日
    151

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号