mysql 时间类型 datetime,timestamp

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 

 

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  当那条数据被修改好 ,那么时间自动变为当前的时间

 

转载于:https://my.oschina.net/u/2419285/blog/715887

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习中的交叉验证(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉验证(Cross validation),交叉验证用于防止模型过于复杂而引起的过拟合. 有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子…

轻松谈话:谈话的力量

如何与她人搭话?? 第一:给别人一个好印象 1、环境:通过共同环境来激发兴趣,比如:在球场,你觉得谁会赢。 2、对方:多数人喜欢谈论自己。 3、自己:主动表明意图,要真诚。 第…

libSVM介绍(二)

from:https://blog.csdn.net/carson2005/article/details/6539192 鉴于libSVM中的readme文件有点长,而且,都是采用英文书写,这里,我把其中重要的内容提炼出来,并给出相应的例子来说明其用法,大家…

四则运算题2

本题新学知识点: itoa函数 char *itoa( int value, char *string,int radix);[1]原型说明:value:欲转换的数据。string:目标字符串的地址。radix:转换后的进制数,可以是10进制、16进制等。程序实例:#includ…

c++调用Libsvm

libSVM中的readme中文版:http://blog.csdn.net/carson2005/article/details/6539192 LibSVM的package中的Readme文件中介绍了怎样具体的使用LibSvm,可以在Dos下以命令形式进行调用,也可以用程序包中提供的GUI程序Svm-toy进行图形化的操作。sv…

STL -set

转载自:http://blog.csdn.net/LYHVOYAGE/article/details/22989659 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构, 在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位…

【机器学习实战之一】:C++实现K-近邻算法KNN

本文不对KNN算法做过多的理论上的解释,主要是针对问题,进行算法的设计和代码的注解。 KNN算法: 优点:精度高、对异常值不敏感、无数据输入假定。 缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值…

javascript设计模式-继承

javascript继承分为两种:类式继承(原型链、extend函数)、原型式继承(对继承而来的成员的读和写的不对等性、clone函数)。 类式继承-->prototype继承: 1 function Person(name){2 this.name …

GIS基础软件及操作(二)

原文 GIS基础软件及操作(二) 练习二、管理地理空间数据库 1.利用ArcCatalog 管理地理空间数据库 2.在ArcMap中编辑属性数据 第1步 启动 ArcCatalog 打开一个地理数据库 当 ArcCatalog打开后,点击, 按钮(连接到文件夹). 建立到包含练习数据的…

libSVM分类小例C++

from:http://www.doczj.com/list_31/ 使用libSVM求解分类问题的C小例 1.libSVM简介 训练模型的结构体 struct svm_problem//储存参加计算的所有样本 { int l; //记录样本总数 double *y; //指向样本类别的组数 //prob.y new double[prob.l]; struct svm_node …

qunit 前端脚本测试用例

首先引用qunit 测试框架文件 <link rel"stylesheet" href"qunit-1.22.0.css"> <script src"qunit-1.22.0.js"></script> <div id"qunit"></div> <div id"qunit-fixture"></div>…

非常规文件名删除

生活中我们偶尔会遇到这样一件事&#xff1a;走在路上&#xff0c;突然感觉鞋底有东西&#xff0c;抬脚一看&#xff0c;是个泡泡糖。拿不掉&#xff0c;走路还一粘一粘的。要多难受有多难受&#xff01;同样在linux中也有这么一种文件名。看着不舒服&#xff0c;却删不掉。今天…

Machine Learning(Stanford)| 斯坦福大学机(吴恩达)器学习笔记【汇总】

from&#xff1a;https://blog.csdn.net/m399498400/article/details/52556168 定义本课程常用符号 训练数据&#xff1a;机器用来学习的数据 测试数据&#xff1a;用来考察机器学习效果的数据&#xff0c;相当于考试。 m 训练样本的数量&#xff08;训练集的个数) x 输入的…

模板匹配算法

from&#xff1a;https://blog.csdn.net/zhi_neng_zhi_fu/article/details/51029864 模板匹配(Template Matching)算法 模板匹配&#xff08;Template Matching&#xff09;是图像识别中最具代表性的方法之一。它从待识别图像中提取若干特征向量与模板对应的特征向量进行比较…

立体匹配十大概念综述---立体匹配算法介绍

from&#xff1a;https://blog.csdn.net/wintergeng/article/details/51049596 一、概念 立体匹配算法主要是通过建立一个能量代价函数&#xff0c;通过此能量代价函数最小化来估计像素点视差值。立体匹配算法的实质就是一个最优化求解问题&#xff0c;通过建立合理的能量函数…

zjnu1730 PIRAMIDA(字符串,模拟)

Description Sample Input 6 JANJETINA 5 1 J 1 A 6 N 6 I 5 E Sample Output 1 0 2 1 1题意&#xff1a;给你一个长度小于等于10^6的字符串&#xff0c;然后每次让它循环铺盖&#xff0c;构成层数为n的塔&#xff0c;让你求得第i层塔中某个字符的个数。 思路&#xff1a;首先要…

ICP算法理解

from&#xff1a;https://blog.csdn.net/linear_luo/article/details/52576082 1 经典ICP ICP的目的很简单&#xff0c;就是求解两堆点云之间的变换关系。怎么做呢&#xff1f;思路很自然&#xff0c;既然不知道R和t(针对刚体运动)&#xff0c;那我们就假设为未知量呗&#xf…

图像处理的灰度化和二值化

from&#xff1a;http://blog.sina.com.cn/s/blog_13c6397540102wqtt.html 在图像处理中&#xff0c;用RGB三个分量&#xff08;R&#xff1a;Red&#xff0c;G&#xff1a;Green&#xff0c;B&#xff1a;Blue&#xff09;&#xff0c;即红、绿、蓝三原色来表示真彩色&#x…

获取子元素

1、纯css 获取子元素 #test1>div {background-color:red;}#test1 div {font-size:14px;}#test1>div:first-child {color:#ccc;} <div id"test1"><div>性别</div><div>男</div></div> 因1示例中为#test1下的子元素 #test1…

44.Android之Shape设置虚线、圆角和渐变学习

Shape在Android中设定各种形状&#xff0c;今天记录下&#xff0c;由于比较简单直接贴代码。 Shape子属性简单说明一下:   gradient -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle是指从哪个角度开始变.solid -- 填充。stroke -- 描边。corners -- 圆角…