mysql TIMESTAMP 不能为NULL
- 一般建表时候,创建时间用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的更多相关文章
- MYSQL timestamp NOT NULL插入NULL的报错问题
1. 在开发两个数据库数据同步功能的时候,需要在本地搭建一个本地的数据库作为一个本地库,然后用于同步开发库中的数据.在插入的时候出现了一个问题. 问题描述: 我们每张表中都会存在一个create_ti ...
- 【MySQL】探究之null与not null
相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 我字段类型是not null,为什么我可以插入空值 为毛not null的效率比null高 判断字段不为空的时候 ...
- [mysql] timestamp自动更新和初始化
1.概述 在我们设计表的时候,考虑将行数据的创建时间和最后更新时间记录下来是很好的实践.尤其是可能需要做数据同步或者对数据新鲜度有要求的表.举些应用场景,更新距上次更新超过2小时的行数据,或者是将一个 ...
- 转!!mysql 字段 is not null 和 字段 !=null
今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime != null 的条件,结果记录都没了,应该用条件 is ...
- Mysql的空值与NULL的区别
Mysql数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段. ...
- Mysql 聚合函数返回NULL
[1]聚合函数返回NULL 当where条件不满足时,聚合函数sum().avg()的返回值为NULL. (1)源数据表 (2)如下SQL语句 SELECT sClass, COUNT(*) AS t ...
- mysql timestamp字段定义的
Cause: java.sql.SQLException: Cannot convert value '2017-07-26 20:40:41.000000' from column 10 to TI ...
- mysql TIMESTAMP 设置为可NULL字段
今天遇到问题是mysql新建表的时候TIMESTAMP 类型的字段 默认是NOT NULL 然后上网查了一下 发现 很多都说 就是不能为NULL的 这都什么心态 其实设置为空很简单 只要在字段后面加上 ...
- MySQL timestamp NOT NULL插入NULL的问题
explicit_defaults_for_timestamp MySQL 5.6版本引入 explicit_defaults_for_timestamp 来控制对timestamp NULL值的处理 ...
随机推荐
- Java int和Integer包装类的区别和比较
区别: ...
- Java 多线程 - synchronized与Lock的区别
https://blog.csdn.net/qq_39521554/article/details/81130442 http://www.cnblogs.com/huangbw/p/8516024. ...
- SQL Server 添加数据库没有权限等
{ 在安装好sql 后 第一次需要用windows 方式登陆 1.创建一个宁外一个登陆名登陆 在安全->登陆名 2.给此登陆属性的服务器角色添加sysadmin权限 //尽情享受!!! }
- Windows exit
退出 CMD.EXE 程序(命令解释器)或当前批处理脚本. EXIT [/B] [exitCode] /B 指定要退出当前批处理脚本而不是 CMD.EXE.如果从一个 ...
- CSS-基本语法/引用/文本设置/选择器/css3属性
CSS-基本语法/引用/文本设置 css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设 ...
- thinkphp url模式
入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作: http://serverName/index.php/模块/控制器/操作 这是 ...
- 锁定文件失败 打不开磁盘“D:\vms\S1\CentOS 64 位.vmdk”或它所依赖的某个快照磁盘(强制关机后引起的问题)
电脑强制关机后,centos系统启动失败,报异常:锁定文件失败 打不开磁盘“D:\vms\S1\CentOS 64 位.vmdk”或它所依赖的某个快照磁盘.解决办法:进入D:\vms\S1目录,删除下 ...
- 关于web前端网站优化
不知道是哪位大牛的文章,转过来嘻嘻. 作者:斯迪链接:https://www.zhihu.com/question/21658448/answer/18903129来源:知乎著作权归作者所有.商业转载 ...
- 命令学习_nslookup
nslookup 域名 这是最常用最简单的用法,可以直接获得目标域名的IP地址和CNAME. 如下是A记录的返回情况 nslookup命令会采用先反向解释获得使用的DNS服务器的名称,上图中ns.gu ...
- 云-腾讯云-实时音视频:实时音视频(TRTC)
ylbtech-云-腾讯云-实时音视频:实时音视频(TRTC) 支持跨终端.全平台之间互通,从零开始快速搭建实时音视频通信平台 1.返回顶部 1. 腾讯实时音视频(Tencent Real-Time ...