文档章节

mysql 时间类型 datetime,timestamp

之渊
 之渊
发布于 2016/07/21 22:47
字数 1157
阅读 247
收藏 0

 

 

CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间,使用mysql 的当前时间。

参考地址:http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html

datetime 和 timestamp 都是保存时间格式为 YYYY-MM-DD HH:MM:SS 一共10多个字符,

datetime 保存的时间范围较大,年的数字在:1000---9999之间

timestamp 保存的时间较小,年的数字在:1970 --2037 之间

mysql中用于表示时间的三种类型date, datetime, timestamp (如果算上int的话,四种) 比较容易混淆,下面就比较一下这三种类型的异同

相同点

都可以用于表示时间
都呈字符串显示

不同点

1.顾名思义,date只表示'YYYY-MM-DD'形式的日期,datetime表示'YYYY-MM-DD HH:mm:ss'形式的日期加时间,timestamp与datetime显示形式一样。
2.date和datetime可表示的时间范围为'1000-01-01'到'9999-12-31',timestamp由于受32位int型的限制,能表示'1970-01-01 00:00:01'到'2038-01-19 03:14:07'的UTC时间。
3.mysql在存储timestamp类型时会将时间转为UTC时间,然后读取的时候再恢复成当前时区。 假如你存储了一个timestamp类型的值之后,修改了mysql的时区,当你再读取这个值时就会得到一个错误的时间。而这种情况在date和datetime中不会发生。
4.timestamp类型提供了自动更新的功能,你只需要将它的默认值设置为CURRENT_TIMESTAMP。
5.除了date是保留到天,datetime和timestamp都保留到秒,而忽略毫秒。

时间格式

mysql提供了一种比较宽松的时间字符串格式用于增删改查。参考iso时间格式,一般习惯于写成'2013-06-05 16:34:18'。但是你也可以简写成'13-6-5',但是这样容易造成混淆,比如mysql也会把'13:6:5'也当做年月日处理,而当'13:16:5'这种形式,则被mysql认为是不正确的格式,会给出一个警告,然后存入数据库的值是'0000-00-00 00:00:00'。

手册中还特意提到了一种情况,就是当年的值是0~69时,mysql认为是2000~2069,而70~99时则认为是1970~1999。我感觉是一种画蛇添足了。

总之,以不变应万变,使用'YYYY-MM-DD HH:mm:ss'格式总是不会错的。

 

因此还是 使用 datetime 吧看起来

 

datetime

1. 占用8个字节2. 允许为空值,可以自定义值,系统不会自动修改其值。3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)5. 不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。6. 可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。结论:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。 timestamp1. 占用4个字节2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。4.值以UTC格式保存( it stores the number of milliseconds)5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。7. 数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。8. 以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。

结论:timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。

前提是 timestamp 要设置默认值为 : CURRENT_TIMESTAMP  当那条数据被修改好 ,那么时间自动变为当前的时间

 

© 著作权归作者所有

之渊
粉丝 12
博文 573
码字总数 168451
作品 0
佛山
程序员
私信 提问
MySQL整数/日期/时间类型说明

一,mysql整数类型: TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分别使用8,16,24,32,64位存储空间。 MySQL 整数类型:所占存储空间、整数范围比较。 整数类型 存储空间 无符号整数范围...

悠悠客
2013/07/19
0
0
MySQL datetime数据类型设置当前时间为默认值

环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL datetime数据类型设置当前时间为默认值 解决: 方法一: 由于MySQL目前字段的默认值不支持函数,所以以createtime datetime default n...

varchard
2015/04/26
0
0
跟王老师学MySQL:MySQL数据类型之日期与时间类型

跟王老师学MySQL:MySQL数据类型之日期与时间类型 主讲教师:王少华 QQ群号:483773664 学习内容 YEAR类型的特点及使用 TIME类型的特点及使用 DATE类型的特点及使用 DATETIME类型的特点及使用...

imentors
2016/07/04
0
0
Java项目统一UTC时间方案

引言 近期团队的个别项目在进行框架升级后,部分时间值存在8小时误差,原因是错误的将数据库中的时间数据理解成了UTC时间(旧版本认为是北京时间) 考虑到未来项目对于时间理解的一致性,我决...

天天顺利
2015/09/24
63
0
oracle --date-对应 mysql 时间类型的以及空值的处理

因为在做Oracle---->mysql的数据迁移的时候,发现Oracle中的date类型,对应的mysql的时间类型设置不当容易引起错误,特别是存在空值的时候 mysql 版本 5.6.40版本 mysql> desc t1; +-------...

bjxiangqian
2018/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nproc systemd on CentOS 7

Increasing nproc for processes launched by systemd on CentOS 7 Ask Question I have successfully increased the nofile and nproc value for the local users, but I couldn't find a p......

MtrS
15分钟前
0
0
了解微信小程序下拉刷新功能

小程序提供了这个事件。 onPullDownRefresh() 监听用户下拉刷新事件。 如果要开启下拉刷新功能,要先到json配置: "enablePullDownRefresh":true 配置后下拉有反应了但是没有加载效果,在onP...

oixan__
41分钟前
1
0
springmvc java对象转json,上传下载(未完)拦截器Interceptor以及源码解析(未完待续)

package com.atguigu.my.controller;import java.util.Collection;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Contr......

architect刘源源
今天
29
0
[日更-2019.5.24、25、26] Android系统中的Binder通信机制分析(一)--servicemanager

声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得去年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾... 最近,刚好在做...

Captain_小馬佩德罗
昨天
24
0
聊聊dubbo的DataStore

序 本文主要研究一下dubbo的DataStore DataStore dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/DataStore.java @SPI("simple")public interface DataStore { ......

go4it
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部