MySQL-Mysql选项 zeroDateTimeBehavior=convertToNull 在PHP中怎么设置?

UI设计界面 UI设计界面 主题:1059 回复:2190

MySQL-Mysql选项 zeroDateTimeBehavior=convertToNull 在PHP中怎么设置?

浮生未歇 发布于 2017-05-04 字数 294 浏览 1012 回复 2

项目初期mysql的时间字段使用了timestamp类型进行了存储,现在的问题是时间为0的都被转换成0000-00-00 00:00:00了,现在需要把时间为0的值转换成Null。
在java中,可以在mysql连接是,通过

characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

甜柠檬 2017-10-06 2 楼

可以用mysql的批量替换语句执行
UPDATE 数据表名 SET
字段名 = replace(字段名, '要替换的字符串', '替换为')
WHERE 设定条件

虐人心 2017-05-25 1 楼

1.在插入的时候判断:

$time = 0;
$sql = "insert into date (name,date) values('111',if('{$time}','{$time}',null))";

这样会在插入 0 时 变为 null,或者插入 0 的时候 改为 now()

2.在查询数据判断:

 SELECT id, name,if(date = '0000-00-00 00:00:00', NULL , date ) AS date FROM date

这样就会将值为 0000-00-00 00:00:00 转换为 null

3 设置sql_model

 mysql_query("set sql_mode='no_zero_date'");
mysql_query("insert into date (name,date) values('xxx'0)");

如果在temestamp 列插入 0 会产生警告,但是数据还是会插入成功,如果插入 0 失败的话sql_model 为:set sql_mode='strict_all_tables,no_zero_date';

这样插入就会报如下错误:
ERROR 1292 (22007): Incorrect datetime value: '0' for column 'date' at row 1