MySQL--时间戳属性1
DATETIME类型和TIMESTAMP类型的差别
DATETIME类型
DATETIME类型存放数据范围从1001年到9999年,精度为秒,将时间和日期封装成格式为YYYYMMDDHHmmss的整数中,使用8个字节的存储空间。
DATETIME类型不存放任何时区相关信息。
DATETIME类型默认为NULL
TIMESTAMP类型
TIMESTAMP类型保存从1970-01-01 00:00(格林尼治标准时间)以来的秒数。
TIMESTAMP精确到秒,使用4个字节的存储空间,存储范围从1970年到2038年。
TIMESTAMP列默认为NOT NULL 在MySQL中,可以使用函数UNIX_TIMESTAMP和FROM_UNIXTIME来进行整数秒和TIMESTAMP时间的转换。
如:
SELECT UNIX_TIMESTAMP(NOW());
SELECT FROM_UNIXTIME(1468602420);
时间戳列属性
Timestarmp列可以设置两个属性:
1、DEFAULT CURRENT_TIMESTAMP 表示插入记录行时,如果未对该列指定值,则使用当前时间来为该字段赋值
2、ON UPDATE CURRENT_TIMESTAMP 表示在更新记录时,如果未更新该事件戳列,使用当前时间来更新该字段,
重点: 当时间戳列属性为ON UPDATE CURRENT_TIMESTAMP时,如果更新操作未给时间戳列指定新值且更新操作未对其他列造成数据变化,则该时间戳列数据不会发生变化。
如果在定义时间戳字段时列定义为:c1 timestamp DEFAULT CURRENT_TIMESTAMP,那么c1列仅在插入且未指定值时会被赋值为当前时间,在更新且未指定更新值时该时间戳列不会发生值变化。
CREATE TABLE tb1002(id int primary key,c1 timestamp DEFAULT CURRENT_TIMESTAMP);
insert into tb1002(id) select union select ;
update tb1002 set id= where id=;
select * from tb1002;
+----+---------------------+
| id | c1 |
+----+---------------------+
| | -- :: |
| | -- :: |
+----+---------------------+
从结果可以发现更新操作未更新时间戳列
如果在定义时间戳字段时列定义为:c1 timestamp ON UPDATE CURRENT_TIMESTAMP,那么C1列仅在更新且未指定更新值时会被更新为当前时间,而在插入时如果未指明插入值则将该事件戳列赋值为‘0000-00-00 00:00:00’
CREATE TABLE tb1003(id int primary key,c1 timestamp ON UPDATE CURRENT_TIMESTAMP);
insert into tb1003(id) select ;
select * from tb1003;
+----+---------------------+
| id | c1 |
+----+---------------------+
| | -- :: |
+----+---------------------+
从结果可以发现插入时列未被赋值为当前时间而被赋值为'0000-- ::’。
当时间戳字段被设置默认值,如在定义时间戳字段时列定义为:c1 timestamp default 0,,则不会为字段增加默认NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP属性
CREATE TABLE tb1004(id int primary key,c1 timestamp default );
查看建表语句变为:
CREATE TABLE `tb1004` (
`id` int() NOT NULL,
`c1` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 insert into tb1004(id) select union select ;
update tb1004 set id= where id=;
select * from tb1004; +----+---------------------+
| id | c1 |
+----+---------------------+
| | -- :: |
| | -- :: |
+----+---------------------+
从结果可以发现,无论是插入还是更新,都没有将时间戳字段更新为当前时间,而是使用默认值!
MySQL--时间戳属性1的更多相关文章
- FROM_UNIXTIME 格式化MYSQL时间戳函数
FROM_UNIXTIME 格式化MYSQL时间戳函数 对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了. 函数:FROM_UNIXTIME作 ...
- MySQL时间戳和时间格式转换函数
MySQL时间戳和时间格式转换函数:unix_timestamp and from_unixtime unix_timestamp将时间转化成时间戳格式.from_unixtime将时间戳转化成时间格 ...
- MySQL 时间戳(Timestamp)函数
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() mysql> select current_timestamp, curren ...
- MySQL字段属性NUll的注意点
MySQL字段属性应该尽量设置为NOT NULL 除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL.这看起来好像有点争议,请往下看. 空值("&quo ...
- MySQL 时间戳(Timestamp)函数
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() mysql> select current_timestamp, curren ...
- mysql数据库优化课程---4、mysql字段属性
mysql数据库优化课程---4.mysql字段属性 一.总结 一句话总结: mysql字段:没有被淘汰的必然有其存在的合理性(也就是有优点),比如char类型 1.为什么char类型没有被淘汰? c ...
- MySQL 时间戳与日期互相转换
MySQL 时间戳与日期互相转换 1.时间戳转换成日期 函数:FROM_UNIXTIME() ,'%Y年%m月%d日') 结果为:2015年04月15日 2.把日期转换为时间戳,和 FROM_UNIX ...
- 一起MySQL时间戳精度引发的血案
写在前面 最近工作中遇到两例mysql时间戳相关的问题,一个是mysql-connector-java和msyql的精度不一致导致数据查不到:另一例是应用服务器时区错误导致数据查询不到.通过这篇文章, ...
- MYSQL时间戳和日期相互转换 笔记整理
相关函数: date_format(date, format) 函数,MySQL日期格式化函数date_format() unix_timestamp() 函数 str_to_date(str, fo ...
- Mysql时间戳转Java时间戳
MySQL 时间戳和Java返回的时间戳是不一样的 例如: 当前时间是 2014-08-04 10:42:55.204000 使用mysql时间戳函数UNIX_TIMESTAMP 返回的结果为: 14 ...
随机推荐
- Iterator,迭代器模式,C++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 自定义input[type="radio"]的样式(支持普通浏览器,IE8以上)
对于表单,input[type="radio"] 的样式总是不那么友好,在不同的浏览器中表现不一. 对单选按钮自定义样式,我们以前一直用的脚本来实现,不过现在可以使用新的伪类 :c ...
- <Flume><Source Code><Flume源码阅读笔记>
Overview source采集的日志首先会传入ChannelProcessor, 在其内首先会通过Interceptors进行过滤加工,然后通过ChannelSelector选择channel. ...
- 初识linux------用户和用户组
事先说明 本Linux的版本为Ubuntu. 为避免一些初学者由于权限问题特此事先说明,在非root权限下时,所有的代码加sudo:如下 (1)不在root权限 sudo useradd -m 用户名 ...
- REST easy with kbmMW #16 – Multiple servers using HTTP.sys transport
前文写过使用HTTP.sys转输层(TkbmMWHTTPSysServerTransport),实现一个kbmMW应用服务器. 如果在一台服务器上,同时运行多个,基于TkbmMWHTTPSysServ ...
- python DRF获取参数介绍
DRF获取参数的方式 例如url url(r'^demo/(?P<word>.*)/$', DemoView.as_view()) 在类视图中获取参数 url:http://127.0.0 ...
- Kaggle(1):数据挖掘的基本流程
我觉得做任何事情,一定要有章法.对于学习类的事情,就是要有框架.第一次打Kaggle比赛,我的一个重要收获就是初步搞清楚了打这类比赛的框架. 可以分为以下六步:理解问题.分析问题.算法选择.结果评价. ...
- wx小程序 使用字体
1.下载项目下的字体库 2.解压复制iconfont.css中的代码到,小程序 app.wxss 3.使用: //icon-begindate表示开始时间的图标 <text class=&quo ...
- DIV垂直居中对齐
效果图: CSS: #container{ display:table-cell; width:300px; height:300px; vertical-align:middle; border:1 ...
- linux command1
#列出指定用户(当前用户)的组信息 groups #将指定的用户添加(-a)到指定的组内(改组必须已经存在)或指定用户从指定的组中删除(-d) gpasswd –a/-d username grou ...