11月30日-0001在时间戳上返回


November 30 -0001 returned on timestamp

在有人说之前,我检查了其他类似的问题,但没有结果。基本上,我从数据库中获取时间戳并显示它,下面是检索代码:

while($row = mysql_fetch_array($result)) {
    $timestamp = date("l F d Y", strtotime($row['timestamp']));
}

这是提交时的代码:

$sql = "INSERT INTO mysql_table (timestamp) VALUES (now())";

我以为这是一个简单的格式错误(因此是strtotime(,但正如你所看到的,这并没有奏效:http://aviatex14.co.uk/anonpost/index.php

我可以将其更改为:

$date = date("l F d Y", $row['timestamp']);

1969年12月31日,但那也不太好。。

哦,我的列数据类型是datetime。

如有任何帮助,我们将不胜感激!:(

您必须在单词timestamp周围加上backticks,因为这是一个保留单词。

 "INSERT INTO mysql_table (`timestamp`) VALUES (now())";

如果你要用PHP进行日期格式化,那么只需从MySQL中获取一个UNIX_TIMESTAMP,它可以直接用作PHP时间戳:

SELECT UNIX_TIMESTAMP(`timestamp`) FROM  ...

您的date(... $row['timestamp'])失败是因为date((函数需要一个TIME VALUE,它只是一个unix时间戳-您传入的是日期的字符串表示,它被转换为0,很可能是1970年1月1日00:00,然后根据时区进行调整,所以您得到的是1969年12月31日。

问题是php使用UNIX_TIMESTAMP,这与MySQL的日期时间格式不匹配。

要么做

SELECT date_format(`timestamp`,aformatstring, see link) as formateddate_as_string

或者做

SELECT UNIX_TIMESTAMP(`timestamp`) as php_friendly_timestamp 

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-格式化