`
丁林.tb
  • 浏览: 788342 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL中timestamp字段的一些规则

阅读更多

有同学说timestamp字段的规则比较“诡异”。手册里面说的比较复杂,这里简单说明一下MySQLtimestamp字段的一些规则。

 

分为两部分

 

定义规则:

 

1、  timestamp字段有三个属性:

a)           是否允许NULL。默认为not null

b)           默认值。可以设定为default CURRENT_TIMESTAMP default 某个常量。若定义时缺省,对于第一个出现的timestamp字段,默认为CURRENT_TIMESTAMP对于其他timestamp字段,默认为 '0000-00-00 00:00:00' Default可以指定为null,前提是本字段允许null

比如声明 field2 timestamp null default null

c)           On update CURRENT_TIMESTAMP。是否在更新其他字段时自动将该timestamp字段修改为当前时间戳。对于第一个出现的timestamp字段,默认为On update CURRENT_TIMESTAMP对于其他timestamp字段,没有此行为。

 

2、  default CURRENT_TIMESTAMP On update CURRENT_TIMESTAMP 可以同时修饰一个列。被这两个属性任意一个修饰的列定义为timestamps_with_niladic, 一个表中最多只能存在一个定义为timestamps_with_niladic的列。若超过1个,则建表失败。

 

以上是定义规则,用于定义建表行为。建表完成以后可以用show create table xxx 来验证上述规则。有了表定义后,我们来看timestamp的使用规则。

 

=====2013-05-05 修改====

在MySQL 5.6版本修改了上述规则,已经允许一个表中可以有多个字段有timestamp的各种属性

 

使用规则

 

1、 在insert或update语句中设置timestamp字段为null时

 a) 若该列为not null,则设置为当前时间戳

 b) 若该列为允许null, 则设置为null

 

2、在insert时若缺省,(insert 语句不指定该列的值),则等效于赋默认值。具体值由default部分决定。

 

3、若一个列有  On update CURRENT_TIMESTAMP 属性,修改本行其他列时会将此timestamp列的值修改为当前时间戳。

 

了解了上面的规则,再来分析你碰到的情况,看看是不是没那么”诡异“了

 

7
10
分享到:
评论
2 楼 tangfei326 2012-08-23  
不错。
1 楼 jinnianshilongnian 2012-08-23  
很细心

相关推荐

    mysql 时间戳的用法

    时间戳字段在MySQL中经常使用到,比如需要记录一行数据创建的时间或修改的时间时,我们通常会使用时间戳即timestamp字段。本篇文章主要介绍timestamp字段的使用方法及相关参数,希望大家读完能对timestamp有更深的...

    C#更新SQLServer中TimeStamp字段(时间戳)的方法

    本文实例讲述了C#更新SQLServer中TimeStamp字段(时间戳)的方法。分享给大家供大家参考。具体实现方法如下: public partial class Form1 : Form { private SqlConnection mCnn = null; private long TimeStamp...

    解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别

    本篇文章是对mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别进行了详细的分析介绍,需要的朋友参考下

    mysql的字段类型及简单的操作命令

    mysql数据的字段类型,如:DateTime,TimeStamp的解释。 登录数据库,修改表中字段及字段属性的命令。

    mysql时间类型对应的java类型1

    Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型 datejava.sql.Date Datetimejava.sql

    MySQL timestamp自动更新时间分享

    MySQL也有默认值timestamp,但在MySQL中,不仅是插入就算是修改也会更新timestamp的值! 这样一来,就不是创建日期了,当作更新日期来使用比较好! 因此在MySQL中要记录创建日期还得使用datetime 然后使用NOW() 函数...

    mysql 数据类型TIMESTAMP

    在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。...

    mysql的timestamp类型字段为'0000-00-00 00:00:00'导致mybatis映射时报错解决方法

    NULL 博文链接:https://bijian1013.iteye.com/blog/2366468

    mysql之TIMESTAMP(时间戳)用法详解

    一、TIMESTAMP的变体 TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如: 1.在创建新记录和修改现有记录的时候都对这个数据列刷新: TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 2.在...

    mysql多个TimeStamp设置的方法解读

    timestamp设置默认值是Default CURRENT_TIMESTAMP timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP 但是由于 一个表中至多只能有一个字段设置CURRENT_TIMESTAMP 两行设置DEFAULT CURRENT_TIMESTAMP...

    MySQL数据库:表的字段类型.pptx

    数据库和表的创建与管理 表的字段类型 ...表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使

    MySQL中文参考手册.chm

    8 MySQL 教程 8.1 联接和断开服务器 8.2 输入查询 8.3 常用查询的例子 8.3.1 列的最大值 8.3.2 拥有某个列的最大值的行 8.3.3 列的最大值:按组:只有值 8.3.4 拥有某个字段的...

    MySQL表中添加时间戳的几种方法

    场景: 有张表的数据需要用同步工具同步至其他库... 您可能感兴趣的文章:mysql之TIMESTAMP(时间戳)用法详解FROM_UNIXTIME 格式化MYSQL时间戳函数MySQL中日期和时间戳互相转换的函数和方法详解MySQL日期 字符串 时间戳

    MySQL 5.1中文手冊

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    MySQL中文参考手册

    + 1.2.1 本手册中使用的约定 o 1.3 MySQL的历史 o 1.4 MySQL的主要特征 o 1.5 MySQL稳定性? o 1.6 顺应2000年 o 1.7 SQL一般信息和教程 o 1.8 有用的MySQL相关链接 * 2 MySQL 邮件列表及如何提问或报告错误...

    MySQL如何为字段添加默认时间浅析

    MySQL 的日期类型有5个,分别是: date、time、year、datetime、timestamp。 类型 字节 格式 用途 是否支持设置系统默认值 date 3 YYYY-MM-DD 日期值 不支持 time 3 HH:MM:SS 时间值或持续时间 不支持 ...

    MYSQL安装包官方试用版

    TIMESTAMP字段 MYSQL_TYPE_DATE DATE字段 MYSQL_TYPE_TIME TIME字段 MYSQL_TYPE_DATETIME DATETIME字段 MYSQL_TYPE_YEAR YEAR字段 MYSQL_TYPE_STRING CHAR字段 MYSQL_TYPE_VAR_STRING VARCHAR...

    MySql 5.1 参考手册.chm

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    144790个去重/未去重的按连续/不连续ID排序的单词、注音、释义、例句表(MySQL,可直接加载导入数据库,注音单独成字段)

    MySQL表的字段如下所示: Field Type Null Key Default Extra id int unsigned NO PRI NULL auto_increment word varchar(50) NO NULL pronunciation varchar(100) YES NULL meaning varchar(500) NO NULL ...

    mysql5.1中文手册

    在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 ...

Global site tag (gtag.js) - Google Analytics