2 natasha0102 Natasha0102 于 2016.04.03 18:41 提问

在MySQL中添加数据用到CURDATE()遇到的问题

在MySQL中创建Info表后,插入数据显示有错,主要是在addtime的字段上。相关代码如下:
#建表
create table item(
……
addtime date not null,
endtime date not null,
……
#插入数据
INSERT INTO item ( item_name , item_remark , item_desc, kind_id, addtime , endtime, init_price, max_price, owner_id, winer_id, state_id)
VALUES ( '主板', '老式主板', '老主板,还可以用', 1, CURDATE()-5, CURDATE() + INTERVAL 30 DAY , 230, 250, 1, null, 1);

我查了CURDATE()函数可以作为字符串,也可以作为数字上下文被使用,定义为Date类型的例子也有,所以初步觉得代码没问题。
但是在输入后,我的电脑上还是出现了如下错误:
ERROR 1292 (22007):Incorrect date value:'20160398' for column 'addtime' at row 1
求大神指点

4个回答

ljfljfljfabc123
ljfljfljfabc123   2016.04.03 19:46
已采纳

等下兄弟,我刚刚没有理解你的意思你前面的addtime想是这个YYYYMMDD这个格式是吧,我刚刚按curdate()+XX的方法存入mysql数据库中,没有
报错a,但是还是YYYYY-MM-DD的格式

ljfljfljfabc123
ljfljfljfabc123   2016.04.03 19:30

兄弟,你的curdate()-5无非是当前日期退后5天是吧,你的endtime都知道CURDATE() + INTERVAL 30 DAY这样表达,你的addtime为什么要curdate()-5呢?
curdate()返回的是当前的日期,你拿一个日期去减一个数字,这么可能不报错;你完全可以写成curdate()-interval 5 day

ljfljfljfabc123
ljfljfljfabc123 回复Natasha0102: 那个curdate()-xx,没有错,错的是你的addtime的类型,知道吧,要改成int数据类型
一年多之前 回复
Natasha0102
Natasha0102 恩,我试了下这样可以
一年多之前 回复
Natasha0102
Natasha0102   2016.04.03 20:04

我尝试了下,发现我自己的MySQL中对于CURDATE()-5就会报错,但是将语句改成CURDATE()-INTERVAL 5 DAY 就没错了,是安装的数据库问题吗?

ljfljfljfabc123
ljfljfljfabc123 curdate()加减数字和curdate()-intervalue 数字 day只是日期格式不一样而已,你上面的问题在addtime的数据类型
一年多之前 回复
ljfljfljfabc123
ljfljfljfabc123   2016.04.03 20:38

兄弟问题解决了,请不要吝啬你的几个赞哦 。。‘==’

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!