一般建表时候,创建时间用datetime,更新时间用timestamp。这是非常重要的。

我测试了一下,如果你的表中有两个timestamp字段,只要你更新任何非timestamp字段的值,则第一个timestamp列会更新成当前时间,而第二人timestamp列的值不变。

————————————————————————-
MySQL5日期类型DATETIME和TIMESTAMP 相关问题详解 MySQL5的日期类型有三种:DATETIME、DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个都带时分秒。TIMESTAMP还可以精确到毫秒。 其次还有个共性,就是他们的格式“不严格”,很自由,一般你认为对的格式都可以正确插入到数据库中。 这里主要解决带时分秒日期的一些常见问题。 一、IMESTAMP 、TIMESTAMP列必须有默认值,默认值可以为“-- ::”,但不能为null。
、TIMESTAMP列不可以设置值,只能由数据库自动去修改。
、一个表可以存在多个TIMESTAMP列,但只有一个列会根据数据更新而改变为数据库系统当前值。因此,一个表中有多个TIMESTAMP 列是没有意义,实际上一个表只设定一个TIMESTAMP列。
、TIMESTAMP列的默认值是CURRENT_TIMESTAMP常量值。当纪录数据发生变化的时候,TIMESTAMP列会自动将其值设定为CURRENT_TIMESTAMP。
、TIMESTAMP列创建后的格式是:
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
这个语句含义,a字段的默认值是CURRENT_TIMESTAMP,当纪录更新时候,自动将a字段的值设置为 CURRENT_TIMESTAMP。
、另外,下面的定义从语法角度是对的,但是没有意义,因为该字段的值不可更改,永远只能为默认值。
`b` timestamp NOT NULL DEFAULT ‘-- ::′, 二、DATETIME 、DATETIME列可以设置为多个,默认可为null,可以手动设置其值。
、DATETIME列不可设定默认值,这是很多人煞费苦心研究的成果,呵呵!
、DATETIME列可以变相的设定默认值,比如通过触发器、或者在插入数据时候,将DATETIME字段值设置为now(),这样可以做到了,尤其是后者,在程序开发中常常用到。 一般建表时候,创建时间用datetime,更新时间用timestamp。
CREATE TABLE user (
id bigint() NOT NULL AUTO_INCREMENT,
name varchar() CHARACTER SET gbk NOT NULL,
sex tinyint() DEFAULT ‘′,
state smallint() DEFAULT ‘′,
createtime datetime NOT NULL,
updatetime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT= DEFAULT CHARSET=latin1 三、日期最大值范围的问题 日期最大范围的问题不是绝对的,很多人制定一个说不能查过20XX年,这是扯蛋,根本没这回事。日期的范围等问题与MySQL的运行模式有关。当然这个范围很宽广,足够祖宗十八代用了,不用担心这问题了。 相反,要注意的问题是,编程语言对日期范围的限制,不同的语言,有不同的限制,这里不做讨论了。 四、日期格式转换 、字符串转日期
select STR_TO_DATE(‘-- ::′, ‘%Y-%m-%d %H:%i:%s’) 、日期转字符串
select DATE_FORMAT(‘-- ::′, ‘%Y-%m-%d %H:%i:%s’) 五、日期的中年月日时分秒星期月份等获取方法 select TIMESTAMP(‘-- ::′); select DATE(‘-- ::′); select YEAR(‘-- ::′); select MONTH(‘-- ::′); select DAY(‘-- ::′); select TIME(‘-- ::′); select CURTIME(); select CURDATE(); select CURRENT_DATE; select CURRENT_TIME; select CURRENT_TIMESTAMP; 方式很多,这里简单列举一二。 六、日期的算术运算 相关的函数很多很多,用法也很简单,一看就会,建议查看MySQL参考手册。
mysql> SELECT DATE_ADD(‘--′, INTERVAL DAY); -> ‘--′ mysql> SELECT DATE_ADD(‘--′, INTERVAL HOUR); -> ‘-- ::′ mysql> SELECT DATE_ADD(‘--′, INTERVAL MONTH); -> ‘--′ 七、日期的大小比较 拿着日当数字,拿着字符串当日期,呵呵,很简单的。
and update_time > ‘-- ::′
and update_time <= ‘-- ::′

mysql TIMESTAMP 不能为NULL的更多相关文章

  1. MYSQL timestamp NOT NULL插入NULL的报错问题

    1. 在开发两个数据库数据同步功能的时候,需要在本地搭建一个本地的数据库作为一个本地库,然后用于同步开发库中的数据.在插入的时候出现了一个问题. 问题描述: 我们每张表中都会存在一个create_ti ...

  2. 【MySQL】探究之null与not null

    相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 我字段类型是not null,为什么我可以插入空值 为毛not null的效率比null高 判断字段不为空的时候 ...

  3. [mysql] timestamp自动更新和初始化

    1.概述 在我们设计表的时候,考虑将行数据的创建时间和最后更新时间记录下来是很好的实践.尤其是可能需要做数据同步或者对数据新鲜度有要求的表.举些应用场景,更新距上次更新超过2小时的行数据,或者是将一个 ...

  4. 转!!mysql 字段 is not null 和 字段 !=null

      今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime != null 的条件,结果记录都没了,应该用条件 is ...

  5. Mysql的空值与NULL的区别

    Mysql数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段. ...

  6. Mysql 聚合函数返回NULL

    [1]聚合函数返回NULL 当where条件不满足时,聚合函数sum().avg()的返回值为NULL. (1)源数据表 (2)如下SQL语句 SELECT sClass, COUNT(*) AS t ...

  7. mysql timestamp字段定义的

    Cause: java.sql.SQLException: Cannot convert value '2017-07-26 20:40:41.000000' from column 10 to TI ...

  8. mysql TIMESTAMP 设置为可NULL字段

    今天遇到问题是mysql新建表的时候TIMESTAMP 类型的字段 默认是NOT NULL 然后上网查了一下 发现 很多都说 就是不能为NULL的 这都什么心态 其实设置为空很简单 只要在字段后面加上 ...

  9. MySQL timestamp NOT NULL插入NULL的问题

    explicit_defaults_for_timestamp MySQL 5.6版本引入 explicit_defaults_for_timestamp 来控制对timestamp NULL值的处理 ...

随机推荐

  1. Python学习笔记(二)——列表

    Python学习笔记(二)--列表 Python中的列表可以存放任何数据类型 >>> list1 = ['Hello','this','is','GUN',123,['I','Lov ...

  2. HTML加载顺序

    一.js执行顺序 //1. 外部引入的js文件,会异步下载并且执行(<script>块中的语句),根据引入的位置会在不同时刻执行 //2.$().ready(function() {}) ...

  3. Android开发 navigation的跳转动画实现

    前言 此篇博客只简短的介绍navigation如何添加跳转页面的动画属性,如果你还为接触了解过navigation.建议你看我另一篇博客Android开发 navigation入门详解 创建动画xml ...

  4. Vim: 强大的g

    来源于:http://vim.wikia.com/wiki/Power_of_g 一般格式: :[range]g/pattern/cmd 对range内所有符合pattern的行执行cmd 常见的一些 ...

  5. csps-模拟7980题解

    题面:https://www.cnblogs.com/Juve/articles/11712702.html 树: 我太sb了不知道DROT是1,还在sb找根 记录一个fa[]数组,表示x的祖先中第一 ...

  6. kubernetes istio之gateway

    [root@master istio-]# kubectl apply -f samples/httpbin/httpbin.yaml service/httpbin created deployme ...

  7. day 84 Vue学习之vue-cli脚手架下载安装及配置

    Vue学习之vue-cli脚手架下载安装及配置   1. 先下载node.js,下载地址:https://nodejs.org/en/download/ 找个目录保存,解压下载的文件,然后配置环境变量 ...

  8. PHP面向对象魔术方法之__clone函数

    l 基本介绍 : 当我们需要将一个对象完全的赋值一份, 保证两个对象的属性和属性值一样,但是他们的数据库空间独立,则可以使用对象克隆. <?php header('content-type:te ...

  9. element表单验证

    rules: { name:[{ required: true, message: '请输入用户名', trigger: 'blur' },{ min: 2, max: 5, message: '长度 ...

  10. 笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...