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数据类型
2 年多之前 回复
Natasha0102
Natasha0102 恩,我试了下这样可以
2 年多之前 回复
Natasha0102
Natasha0102   2016.04.03 20:04

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
mysql数据库curdate()使用错误示例
同事分享了一个线上bug,是有关mysql数据中curentdate()错误使用引起的。查询当前时间前一天,不要用curdate()-1;要使用DATE_SUB(CURDATE(),INTERVAL 10 DAY)使用curdate-1 会出现的问题,比如当前时间是2018-01-10,前10天期望是2017-12-31,但是使用CURDATE()-10得不到想到的结果用CURDATE()-10查...
MySQL CURDATE() 函数
定义和用法 CURDATE() 函数返回当前的日期。 语法 CURDATE() 实例 例子 1 下面是 SELECT 语句: SELECT NOW(),CURDATE(),CURTIME() 结果类似: NOW() CURDATE() CURTIME() 2008-12-29 16:25:46 2008-12-29 16:25:46
mysql curdate sysdate now 时间加减
select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT   substring( timediff('23:40:00', ' 18:30:00'),1,5) ----“05:10”相减返回小时:分钟 select datediff('2008-08-08', '2008-08-01'); -- 7      -----两日期相减
MySQL中 now() sysdate() curdate() 的区别
[sql] view plain copy   -- now() 返回当前日期和时间,格式如下:2013-01-17 10:57:13   mysql> select now(), sleep(5), now();   +---------------------+----------+---------------------+   | now()
mysql中 now() sysdate() curdate() 的区别
-- now() 返回当前日期和时间,格式如下:2013-01-17 10:57:13 mysql> select now(), sleep(5), now(); +---------------------+----------+---------------------+ | now() | sleep(5) | now() | +---
PHP mysql数据库中的YEAR()与CURDATE()函数
一开始很少用mysql中的YEAR()与CURDATE()函数,下面我就通过mysql参考手册中的例子具体说说对它的理解,我在MYSQL中截了一张图,如下: 1:上图中CURDATE()返回当前日期的函数,这个好理解; 2:(YEAR(CURDATE())-YEAR(birth))这个也好理解,其中YEAR()函数返回的是年份,例如有这样一段查询:mysql>SELECT YEAR(CU
mysql时间函数之current_date,curdate,current_time,curtime,now用法
语法 CURRENT_DATE, CURRENT_DATE() CURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE(). CURRENT_DATE和CURRENT_DATE()是CURDATE()的同义词。 CURDATE() Returns the current date as a value in ‘YYYY-MM-D...
MySQL之 now(),curdate(),sysdate()区别
不多说直接上直观的图: 三者查询出来的显示时间的结果如上图: 说下细节的区别: sysdate是查看的系统时间,时时的系统时间。 所以,我们一般在执行语句的时候,都是用now(), 因为sysdate()获取当时实时的时间,这有可能导致主库和从库执行时返回值不一样,(如果有延迟的话就会导致时间不一致)导致主从数据库不一致。 另外还
SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)——日期操作
练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是没有的,google一番发现原来是要用to_char()。         搜索到一篇英文文章《Executing Common  SQL Coding Tasks Using Function C
Msql 中的 时间段查询(一天,一周,一个月)
我们在对数据查询或菜单时经常要对指定的时间或时间段进行查询,例如要查询一天内的信息,要查询一周内的信息,要查询一个月内的数据,这里我讲下DATE_SUB函数,同时结合实例进行讲解 定义和用法 DATE_SUB() 函数从日期减去指定的时间间隔。 1.语法 DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式。expr 参数是您希望添加的