关于datetime,date,timestamp,year,time时间类型小结
关于datetime,date,timestamp,year,time时间类型
datetime占用8个字节
日期范围:”1000-01-01 00:00:00” 到”9999-12-31 23:59:59”
date占用3个字节
可以显示范围:”1000-01-01” 到”9999-12-31”
timestamp占用4个字节
timestamp显示结果跟datetime一样,固定格式:”YYYY-MM-DD HH:MM:SS”
不同的是:
1,timestamp占用4个字节,显示的范围”1970-01-01 00:00:00”到”2038-01-19 03:14:17”.
2,在建表时,列为timestamp的日期类型可以设置为一个默认值,而datetime不行。
3,在更新表时,可以设置timestamp类型的列自动更新为当前时间。
4,在一个表中,只能有一行指定的时间类型能指定为“TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP”,其他列的时间类型需要指定为” timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'”。
示例1:
CREATE TABLE t (a INT,b TIMESTAMP DEFAULT CURRENT_TIMESTAMP) ENGINE=INNODB CHARSET=utf8;
SHOW CREATE TABLE t;
INSERT INTO t(a) VALUES (1);
root@python 17:04>SELECT * FROM t;
+------+---------------------+
| a | b |
+------+---------------------+
| 1 | 2012-12-13 17:03:58 |
+------+---------------------+
示例2:
CREATE TABLE `t2` (
`a` INT(11) DEFAULT NULL,
`b` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=INNODB DEFAULT CHARSET=utf8;
//插入数据
root@python 17:07>insert into t2 select 1,current_timestamp;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
root@python 17:07>select * from t2;
+------+---------------------+
| a | b |
+------+---------------------+
| 1 | 2012-12-13 17:07:25 |
+------+---------------------+
1 row in set (0.00 sec)
//稍微等待一下
root@python 17:07>update t2 set a=100;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
root@python 17:08>select * from t2;
+------+---------------------+
| a | b |
+------+---------------------+
| 100 | 2012-12-13 17:08:16 |
+------+---------------------+
1 row in set (0.00 sec)
发现update操作后,更改了a列的值,b列的时间有原来的“2012-12-13 17:07:25” 更新为” 2012-12-13 17:08:16”。
//如果update操作更新a列的值,而实际没有改变行中的任何数据,因此b列的不会进行相应的操作。请看实例3。
实例3:
root@python 17:08>select * from t2;
+------+---------------------+
| a | b |
+------+---------------------+
| 100 | 2012-12-13 17:08:16 |
+------+---------------------+
1 row in set (0.00 sec)
root@python 17:11>update t2 set a=100;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
root@python 17:11>select * from t2;
+------+---------------------+
| a | b |
+------+---------------------+
| 100 | 2012-12-13 17:08:16 |
+------+---------------------+
1 row in set (0.00 sec)
总结下:在使用timestamp类型时,由于目前程序中时间不为NULL时,是程序赋值的。请在制定timestamp类型时,不要指定“TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”,而指定“TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP”。这样就不会造成更新数据导致时间的更改。
year和time类型
year类型只占用1个字节,对于year(4),显示的年份范围为1901-2155;year(2)显示年份范围为1970-2070。
time类型占用3个字节
概要:时间类型本着够用的原则,可以用timestamp就千万不要用datetime,可以用year的就不要用datetime,或则date类型。
关于datetime,date,timestamp,year,time时间类型小结的更多相关文章
- 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)
一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式 ...
- laydate type=time/datetime/date 开始时间和结束时间的输入限制
最近项目中使用了laydate插件,需要限制开始时间和结束时间的输入 1.type=date 要求:周期开始时间和周期结束时间以天为单位,结束时间不能早于开始时间,可以是同一天. 周期开始时间:< ...
- mysql中的时间类型datetime,date,time,year,timestamp小知识点
1.datetime,date,time,year四个类型的值,可以手动输入,也可以调用函数获得值 ① 手动输入,格式如下: datetime "2016-6-22 14:09:30&quo ...
- python datetime date time详解
之前一直被datetime,date,time弄的有点乱,可能是因为看文档每太看明白,找到了两篇文章供大家阅读都是转载的,其中有些名词这里解释一下: 世界协调时间(Universal Time Coo ...
- SQL中datetime和timestamp的区别
在开发一个简单的报名程序时,要求在每一条新插入的记录后面添加一个日期字段,方便日后查询和排序.于是立即百度,发现可以使用datetime或timestamp两种日期类型来实现.这对于爱纠结的我来说是不 ...
- Python中datetime的使用和常用时间处理
datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块.下面总结下本人想到的几个常用功能. 1.当前时间: >>> print dateti ...
- 孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块
孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.datetime模块 dateti ...
- MySql中的时间类型datetime,timestamp,date,year比较
MySQL日期类型.日期格式.存储空间.日期范围比较.日期类型 存储空间 日期格式 日期范围------------ --------- ...
- MySQL 时间类型 DATE、DATETIME和TIMESTAMP
1.DATE.DATETIME和TIMESTAMP 表达的时间范围 Type Range Remark DATE '1000-01-01' to '9999-12-31' 只有日期部分,没有时间部分 ...
随机推荐
- AJPFX总结方法里的属性
嵌套循环:循环里套循环 假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次. Eg:利用for循环语句的嵌套打印出乘法口诀表 class break1 ...
- 014、BOM与DOM对象的应用
Screen屏幕对象 Width:屏幕的宽度 Height:屏幕的高度 availWidth:屏幕的有效宽度(不含任务栏) availHeight:屏幕的有效高度(不含任务栏) colorDepth: ...
- python中一些函数应用
items将一个字典以列表的形式返回,因为字典是无序的,所以返回的列表也是无序的. 例如:a = {"a":1,"b":2} a.items 就是 a ...
- COGS 2111. [NOIP2015普及]扫雷游戏
★ 输入文件:2015mine.in 输出文件:2015mine.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 扫雷游戏是一款十分经典的单机小游戏.在 n 行 ...
- SEO 第九章
SEO第九章 本次课目标: 1. 外部优化之平台优化 2. 如何撰写SEO诊断方案 一.外部平台优化——百度系列平台 百度系列的平台都是属于百度自己的产品,排名都是比较高的,所以我们在做外部推广的 ...
- 一行命令杀掉defunct进程
一行命令杀掉defunct进程 今天在杀掉defunc过程中一直搞不完,索性写一行命令,注意先看懂谨慎使用 ps -ef|grep defunct|awk '{print " ps -ef| ...
- jeecms
===标签=== <!-- 显示一级栏目对应的二级栏目 --> <!-- [@cms_channel_list parentId=c.id] [#if tag_list?size&g ...
- mysql利用binlog恢复数据
需求:需要给开发提供一个2018年9月30号的数据,按照我们公司正常备份策略来说,直接找到对应时间的备份数据,解压导入即可,恰好这个时间节点的数据没有,只备份到2018年9月25号的,糟糕了吧 咋办呢 ...
- attr和prop的区别
由于prop(property的缩写)和attr(attribute的缩写)翻译成汉语,均有“特性.属性”等意思的原因,导致大家容易混淆分不清. (1)在处理自定义时属性时,用attr(),若用pro ...
- 二分+贪心 || CodeForces 551C GukiZ hates Boxes
N堆石头排成一列,每堆有Ai个石子.有M个学生来将所有石头搬走.一开始所有学生都在原点, 每秒钟每个学生都可以在原地搬走一块石头,或者向前移动一格距离,求搬走所有石头的最短时间. *解法:二分答案x( ...