Php MySQL日期:0000-00-00:00:00

Php MySQL日期:0000-00-00:00:00,php,mysql,Php,Mysql,在我的问题中: $cselect = mysql_real_escape_string($_POST['cselect']); --------------- --------------- $sql = sprintf("INSERT INTO content (id, catID, title, abstract, body, status, published, date, description_meta, key

在我的问题中:

       $cselect = mysql_real_escape_string($_POST['cselect']);
       ---------------
       ---------------
       $sql = sprintf("INSERT INTO content
       (id, catID, title, abstract, body, status, published, date, description_meta,   keywords_meta)
        VALUES ('', '%s', '%s','%s','%s','%s','%s','%s','', '' )", $cselect,$chead, $cabst,$ctext, $cp, $cradio,  'TIMESTAMP: Auto NOW()');
日期的输出为:

0000-00-00 00:00:00
我的查询有什么问题?

时间戳:Auto NOW()
绝对不是时间戳字符串的正确值,MySQL会以静默方式(除非您检查警告或启用严格模式)将其转换为零时间戳


您应该使用函数
NOW()
(不带引号)或者更确切地说是
CURRENT\u TIMESTAMP

您可以使用
date('Y-m-d h:i:s')
而不是'TIMESTAMP:Auto NOW()'来获取当前时间。

您使用sprintf()的原因是什么?除了强制将内容作为字符串处理外,您不会格式化任何值。使用


$sql=不要在查询中指定日期,而是将
Date
列更改为
Timestamp
类型,然后将其默认值设置为
CURRENT\u Timestamp

通过这种方式,您甚至不需要在查询中处理
date
列,MySQL将在接收到insert查询时以UTC插入实际日期,从而为您处理这一问题

下面是更改日期列的SQL查询:


我希望这能有所帮助。

With NOW():致命错误:调用未定义的函数NOW(),当前时间戳输出为0000-00-00 00:00:00NOW()是一个MySQL函数,而不是PHP函数。因此,请将其保留在引号内。是的,您需要在PHP代码中引用它,但不能像原始sprintf那样在SQL中引用。With NOW():致命错误:调用未定义的函数NOW(),因为没有零年,所以该日期的格式不正确。
$sql = <<<EOL
INSERT INTO content
    (id, catID, title, abstract, body, status, published, date, description_meta, keywords_meta)
VALUES
    ('', '$cselect', '$chead','$cabst','$ctext','$cp','$cradio', NOW(),'', '' );
EOL;
ALTER TABLE  `content ` CHANGE  `date`  `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP