MySQL NOW()仅返回Year

时间:2011-03-06 10:10:06

标签: mysql datetime time

关于NOW()函数的MySQL文档...

  

以“YYYY-MM-DD HH:MM:SS”或YYYYMMDDHHMMSS.uuuuuu格式返回当前日期和时间,具体取决于函数是在字符串还是数字上下文中使用。该值以当前时区表示。

这是我的查询...

$sql = "

    INSERT INTO `users` ( `username`, `password`, `email`, `time` )
    VALUES ('{$username}', '" . sha1( $password ) . "', '{$email}', NOW() )

";

问题是在数据库中我没有完整的日期时间,而只有年份。任何解决方案?

3 个答案:

答案 0 :(得分:5)

  

它是int(10),就像我使用UNIX时间戳时那样。

NOW()仅适用于DATETIME字段。

您需要将字段转换为DATETIME(首选方法),或使用UNIX_TIMESTAMP():NOW()转换为UNIX时间戳

UNIX_TIMESTAMP(NOW())

答案 1 :(得分:4)

我遇到了同样的麻烦,最长时间难过,直到我读到这个问题。我使用mysql的now()函数来更新成员的上次登录时间。

MySQL的now()以字符串形式返回日期时间,如YYYY-MM-DD HH:MM:SS - 在我停止使用此行的某个地方,并开始使用time() (UNIXTIME)(使其更易于使用),返回一个字符串数字,如1352254528。但是,您无法在日期时间字段中存储这样的数字字符串,同样,您也无法将YYYY-MM-DD HH:MM:SS存储在int(11)字段中。后者只会导致存储一年。

最后你应该使用:

int(11)如果您打算使用PHP的time()函数将时间存储为一串数字 要么 DATETIME field如果您要使用MySQL的NOW()函数。

答案 2 :(得分:1)

尝试

strtotime(now())

您绝对应该使用timestampdatetime作为列的类型。