11月30日-0001按时间戳返回

时间:2011-10-20 21:28:59

标签: php mysql date time

在有人说出来之前,我检查过这样的其他问题,但无济于事。基本上,我从我的数据库中取出时间戳并显示它,这是检索的代码:

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。

任何帮助将不胜感激! :)

3 个答案:

答案 0 :(得分:5)

你必须在单词timestamp周围添加反引号,因为这是一个保留字。

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

答案 1 :(得分:1)

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

SELECT UNIX_TIMESTAMP(`timestamp`) FROM  ...

你的date(... $row['timestamp'])失败了,因为date()函数需要一个TIME VALUE,这只是一个unix时间戳 - 你传入一个日期的字符串表示,转换为0 ,最有可能的,也就是1970年1月1日00:00,然后根据时区进行调整,所以你会得到Dec 30/69。

答案 2 :(得分:0)

问题是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-format