使用PHP格式化SQL时间戳

最后发布: 2010-02-20 21:05:40


问题

我有一个带有时间戳字段的mySQL数据库。 它在我测试时目前只有一个条目,它是

2010-02-20 13:14:09

我从数据库中提取并使用

echo date("m-d-Y",$r['newsDate'])

我的最终结果显示为

12-31-69

谁知道为什么?

编辑:editedit:忽略编辑...记事本++的FTP插件超时,不幸的是,当它无法同步时不显示错误。

php mysql date timestamp
回答

date函数需要将UNIX时间戳作为其第二个参数 - 这意味着您必须将从数据库获取的日期转换为UNIX时间戳,这可以使用strtotime完成:

$db = '2010-02-20 13:14:09';
$timestamp = strtotime($db);
echo date("m-d-Y", $timestamp);

你会得到:

02-20-2010


您将'2010-02-20 13:14:09'字符串传递给date函数; 该字符串不是有效的UNIX时间戳。

'12-31-69 '可能是1970-01-01 ,在你的地方; 1970-01-01是Epoch - 与0 UNIX时间戳对应的日期。


回答

对于初学者来说,php date()函数期望秒为第二个变量。 因此,说明您的日期显示错误的原因。 在该问题上检查此来源

然后,它为我们提供了问题的答案,让PHP正确地从SQL时间戳格式化日期,我们只需更改查询...

SELECT author, `when`

把它改成......

SELECT author, UNIX_TIMESTAMP(`when`)

然后使用PHP日期函数,使用存储上述SQL查询结果的变量。


回答

我认为这对新人有用:

示例基本减法从MYSQL格式起1小时:

$to='2013-25-10 22:56:00'; //curr time
$timestamp = strtotime($to); //convert to Unix timestamp
$timestamp = $timestamp-3600; //subtract 1 hour (3600 this is 1 hour in seconds)
echo date("Y-m-d H:i:s",$timestamp); //show new date


回答

您可以使用MySQL的date_format()函数代替:

SELECT date_format(timestampfield, '%m-%d-%Y') FROM table etc....

这将节省您必须将时间戳往返到unix时间,然后再回到PHP中的正常日期字符串。 一个日期时间格式化调用而不是两个。


回答

编辑:检查后,似乎MySQL将timestamp作为字符串返回给PHP,所以这个答案是假的:)

无论如何,你在1969年获得约会的原因可能是你将零unix时间从UTC转换为本地时间。 unix时间是自1970年以来的秒数。因此值为0意味着1970.你可能生活在具有负偏移的时区,如GMT-6,最终为31-12-69。


回答

好吧,我正在和这个摔跤一个星期(更长的时间,但我休息了一下)。

我在表格中有两个特定字段

creationDate > timestamp > current_timestamp
editDate > timestamp > current_timestamp

他们在1969年12月31日退出,或者什么都没有......烦人......非常讨厌

在mysql查询我做了:

            unix_timestamp(creationDate) AS creationDate
            unix_timestamp(editDate) AS editDate

在PHP转换我做了:

    $timestamp = $result_ar['creationDate'];
    $creationDate = date("Y-M-d (g:i:s a)", $timestamp)
            echo($creationDate);

    $editstamp = $result_ar['editDate'];
    $editDate = date("Y-M-d (g:i:s a)", $editstamp)
            echo($editDate);

这解决了我回来的问题

            2010-Jun-28 (5:33:39 pm)
            2010-Jun-28 (12:09:46 pm)

分别。

我希望这有助于某人...