MySQL运行存储过程出现1292错误
2018-01-23 17:19
591 查看
在navicat上远程连接MySQL,运行存储过程时传入了一个时间参数‘0000-00-00 00:00:00’,发生如下错误
1292 - Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘targetTime’ at row 1
官方文档上说明MySQL允许将’0000-00-00’保存为“伪日期”,但是MySQL有一个NO_ZERO_DATE SQL模式,这个模式默认是打开的,不允许产生伪日期,所以要关掉这个选项。执行SQL语句:
set global sql_mode=’STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER’;
使用show variables like ‘%sql_mode%’;查看关于sql_mode的变量,如果没有NO_ZERO_IN_DATE和NO_ZERO_DATE就说明修改成功
上面的也许有用:但楼主是因为mysql时间类型为timestamp,因此导致1292
MYSQL timestamp取值范围是 1970-01-01 00:00:00 到 2038-01-19 3:14:07
TIMESTAMP和DATETIME的取值范围不同同时存储不同,
TIMESTAMP占四个字节取值范围为 1970-01-01 00:00:00 到 2038-01-19 3:14:07
那么为什么是这个取值范围呢 4个字节明显不够存储日期格式。4字节为2^32次方
那么我们可以分析timestamp实际是C语言的一个INT 类型带符号位的。
用ORACLE的格式算出来为
2^31是因为带了符号位少了一位。所以是31次方,而减一因为从0开始而不是1,比如2的8次方为256但是实际的数值是0~255(FF)
可以想到TIMESTAMP实际是一个相加的过程 他存储在内部格式是一个表示秒的 int类型 带符号位
1292 - Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘targetTime’ at row 1
官方文档上说明MySQL允许将’0000-00-00’保存为“伪日期”,但是MySQL有一个NO_ZERO_DATE SQL模式,这个模式默认是打开的,不允许产生伪日期,所以要关掉这个选项。执行SQL语句:
set global sql_mode=’STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER’;
使用show variables like ‘%sql_mode%’;查看关于sql_mode的变量,如果没有NO_ZERO_IN_DATE和NO_ZERO_DATE就说明修改成功
上面的也许有用:但楼主是因为mysql时间类型为timestamp,因此导致1292
MYSQL timestamp取值范围是 1970-01-01 00:00:00 到 2038-01-19 3:14:07
TIMESTAMP和DATETIME的取值范围不同同时存储不同,
TIMESTAMP占四个字节取值范围为 1970-01-01 00:00:00 到 2038-01-19 3:14:07
那么为什么是这个取值范围呢 4个字节明显不够存储日期格式。4字节为2^32次方
那么我们可以分析timestamp实际是C语言的一个INT 类型带符号位的。
用ORACLE的格式算出来为
SQL> select to_date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')+(power(2,31)-1)/(60*60*24) from dual; TO_DATE('1970-01-0100:00:00',' ------------------------------ 2038/1/19 3:14:07
2^31是因为带了符号位少了一位。所以是31次方,而减一因为从0开始而不是1,比如2的8次方为256但是实际的数值是0~255(FF)
可以想到TIMESTAMP实际是一个相加的过程 他存储在内部格式是一个表示秒的 int类型 带符号位
相关文章推荐
- MySQL运行存储过程出现1292错误
- mysql 分页存储过程转自于wenlujun 的BLOG(备注如果出现编码格式错误一定要加charset设置编码格式)
- mysql调用存储过程出现Illegal mix of collations错误
- 在mysql中创建存储过程出现1307错误,解决方法
- MYSQL存储过程出现Result consisted of more than one row 错误的解决方法
- 使用Toad创建存储过程出现错误并解决
- MySql存储过程—8、条件处理(Condition Handling) / 错误、异常处理
- mysql存储过程记录错误和退出程序
- mysql导入数据库中的存储过程和函数出现错误的解决办法
- SQL Server安装过程中出现“以前的某个安装程序已在安装计算机上创建挂起的文件操作,运行程序前必须重启计算机”错误的解决方法
- mysql更改了数据库存储路径后,出现错误1067 进程意外终止
- MySQL存储过程错误No data - zero rows fetched, selected, or processed
- MYSQL中运行sql文件出现 TYPE=MyISAM 错误的解决方法
- VC运行过程中出现错误:unresolved external symbol _main
- mysql 存储过程相关错误解决
- MySql:存储过程编译错误代码1337
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- sql server 2000 扩展存储过程是DLL,DLL名字错误也能运行,但是返回结果不正确
- asp调用存储过程出现错误 '800a0bb9'
- mysql 存储过程错误调试记录