2014-10-06 123 views
0

我有一个数据库,它具有完美的NOW()函数,显示正确的日期。 并且在意外删除它之后,我创建了一个类似的数据库,但是当我插入NOW()插入 当前当前日期时,它会插入为0000-00-00 00:00:00。在datetime数据类型中插入NOW()值会返回0000-00-00 00:00:00

显示的警告是数据在'blog_date'被截断。现在我不知道如何解决这个使用NOW()获取当前时间的问题。下面是我的blog_details表,INSERT命令和错误:

CREATE TABLE `blog_details` (`blog_id` int(11) NOT NULL AUTO_INCREMENT, 
`title` char(200) NOT NULL, `blog_content` varchar(2500) NOTNULL, 
`blog_date` datetime NOT NULL, `cat_name` varchar(30) NULL, 
PRIMARY KEY (`blog_id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

INSERT INTO `blog_details` (`title`, `blog_content`, `blog_date`, `cat_name`) 
VALUES('Breaking Bad TV Series', 'Best series evar', 'NOW()', 'Uncategorized'); 

+---------+------+------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------+
| Warning | 1265 | Data truncated for column 'blog_date' at row 1 |
+---------+------+------------------------------------------------+

+1

从'NOW()'中删除引号,否则你会传递*字符串*'“NOW()”'而不是函数。 – 2014-10-06 15:54:53

+0

真的应该在这里使用UTF-8而不是'latin1'。 – tadman 2014-10-06 15:56:38

+1

一个问题是,“坏事”不是“最佳系列evar”。 MySQL显然知道这个荣誉属于“太空堡垒卡拉狄加”。 (笑脸笑容)。 (说真的,你已经把NOW()用单引号括起来,做成了一个字符串文字。删除单引号,它会起作用。) – spencer7593 2014-10-06 15:59:54

回答

4

什么你将是字符串"NOW()"这是从函数调用NOW()完全不同。因为"NOW()"不是有效日期,所以它为零。

从中删除引号可以解决问题。

0

你不应该引述NOW()函数,所以尽量不',看看有没有什么帮助。

INSERT INTO blog_details(title, blog_content, blog_date, cat_name) 
VALUES('Breaking Bad TV Series', 'Best series evar', NOW(), 'Uncategorized'); 
0

您在NOW()函数附近有引号。将其更改为:

INSERT INTO `blog_details` (`title`, `blog_content`, `blog_date`, `cat_name`) 
VALUES('Breaking Bad TV Series', 'Best series evar', NOW(), 'Uncategorized');