关于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”。这样就不会造成更新数据导致时间的更改。

yeartime类型

year类型只占用1个字节,对于year(4),显示的年份范围为1901-2155;year(2)显示年份范围为1970-2070。

time类型占用3个字节

概要:时间类型本着够用的原则,可以用timestamp就千万不要用datetime,可以用year的就不要用datetime,或则date类型。

关于datetime,date,timestamp,year,time时间类型小结的更多相关文章

  1. 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)

    一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式 ...

  2. laydate type=time/datetime/date 开始时间和结束时间的输入限制

    最近项目中使用了laydate插件,需要限制开始时间和结束时间的输入 1.type=date 要求:周期开始时间和周期结束时间以天为单位,结束时间不能早于开始时间,可以是同一天. 周期开始时间:< ...

  3. mysql中的时间类型datetime,date,time,year,timestamp小知识点

    1.datetime,date,time,year四个类型的值,可以手动输入,也可以调用函数获得值 ① 手动输入,格式如下: datetime "2016-6-22 14:09:30&quo ...

  4. python datetime date time详解

    之前一直被datetime,date,time弄的有点乱,可能是因为看文档每太看明白,找到了两篇文章供大家阅读都是转载的,其中有些名词这里解释一下: 世界协调时间(Universal Time Coo ...

  5. SQL中datetime和timestamp的区别

    在开发一个简单的报名程序时,要求在每一条新插入的记录后面添加一个日期字段,方便日后查询和排序.于是立即百度,发现可以使用datetime或timestamp两种日期类型来实现.这对于爱纠结的我来说是不 ...

  6. Python中datetime的使用和常用时间处理

    datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块.下面总结下本人想到的几个常用功能. 1.当前时间: >>> print dateti ...

  7. 孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块

    孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.datetime模块 dateti ...

  8. MySql中的时间类型datetime,timestamp,date,year比较

    MySQL日期类型.日期格式.存储空间.日期范围比较.日期类型        存储空间       日期格式                 日期范围------------ ---------   ...

  9. MySQL 时间类型 DATE、DATETIME和TIMESTAMP

    1.DATE.DATETIME和TIMESTAMP 表达的时间范围 Type Range Remark DATE '1000-01-01' to '9999-12-31' 只有日期部分,没有时间部分 ...

随机推荐

  1. 05.NopCommerce给Topic表添加排序及类别字段

    在用到Nopcommerce中静态页面表时,发现Topic表没有排序字段和类别字段,导致如果Page文件很多的话,无法区分是哪个类别,为此我稍微扩展了一下字段,在此记录一下操作流程,方便以后自己查看, ...

  2. 微信环境支付宝服务窗环境app手机浏览器pc端混合判断

    //微信环境 if(userAgent.match(/micromessenger/) == 'micromessenger'){ }//支付宝服务窗环境else if(userAgent.match ...

  3. BZOJ3083: 遥远的国度(树链剖分)

    题意 $n$个节点的树,每个点有权值,支持三种操作 1. 换根 2.把$x$到$y$路径上节点权值变为$z$ 3.询问路径最小值 Sol 啥?你说这是TopTree的裸题?那你写去啊 很显然,如果没有 ...

  4. centos系统iptables使用帮助

    #如果只是想屏蔽IP的话“开放指定的端口”可以直接跳过.#屏蔽单个IP的命令是iptables -I INPUT -s 123.45.6.7 -j DROP#封整个段即从123.0.0.1到123.2 ...

  5. umask命令

    umask——显示.设置文件的缺省权限 the user file-creation mask 命令所在路径:Shell内置命令 示例1:显示缺省权限 # umask -S 参数S的作用是以rwx形式 ...

  6. 如何使用capedit分割数据包文件

    wireshark是一个网络数据包的分析工具,主要用来捕获网卡上的数据包并显示数据包的详细内容.在处理一些大的数据包文件时,如果直接用wireshark图形工具打开一些大文件的数据包会出现响应慢甚至没 ...

  7. 为什么要使用spl_autoload_unregister

    最近学习 laravel 源码,发现他的 autoload_real.php 里面有一段: spl_autoload_register(array('ComposerAutoloaderInit290 ...

  8. BI结构图及自动建表结构图

  9. 暑假集训 || 区间DP

    区间DP 经典石子合并问题V1    复杂度 On3 int a[SZ], sum[SZ], f[SZ][SZ]; int main() { int n; scanf("%d", ...

  10. ERROR: HHH000091: Expected type: java.sql.Timestamp, actual value: java.lang.Integer

    在将MySql的数据对应到Java的实体类的时候, 遇到了错误 关键点: Hibernate从mysql数据库查出来的Timestamp类型的数据, 会被Hibernate(或者是数据库连接池Drui ...