使用php格式化mysql时间戳

时间:2011-03-17 13:00:40

标签: php mysql

我将名为postDate的列定义为时间戳。 当我直接打印它时:

echo $result['postDate']; 

我确实得到了存储的内容(例如2011-03-16 16:48:24) 另一方面,当我通过日期功能打印它时:

echo date('F/j/Y',$result['postDate'])

我得到December/31/1969

我做错了什么?

非常感谢

4 个答案:

答案 0 :(得分:58)

试试这个。

date('F/j/Y',strtotime($result['postDate']));

需要时间戳,而不是格式化日期作为第二个参数。 或者您也可以尝试

SELECT UNIX_TIMESTAMP(postDate) as postDateInt from myTable

而不是SELECT postDate from myTable 然后在你的代码中使用它。

date('F/j/Y',$result['postDateInt']);

答案 1 :(得分:9)

PHP date函数查找int time()作为第二个参数。尝试使用strtotime()

echo date('F/j/Y', strtotime($result['postDate']) );

答案 2 :(得分:7)

为什么不在MySQL查询中根据需要格式化日期?

SELECT DATE_FORMAT(postDate, '%M/%D/%Y') as date from table

答案 3 :(得分:0)

PHP`date()'函数需要第二个参数的数字 - 即unix时间戳。

您可以使用strtotime()函数将SQL日期字符串(或几乎任何其他日期字符串)转换为PHP中的时间戳。至少有两个其他答案已经提出了这个建议。

但是,我建议你最好先用unix时间戳格式从数据库中获取日期。您可以通过使用MySQL UNIX_TIMESTAMP()函数查询来执行此操作,如下所示:

SELECT UNIX_TIMESTAMP(mydatefield) AS mydatefield_timestamp FROM mytable

..显然,适当地替换字段和表名。

然后,您将在PHP中返回的数据集中以时间戳格式获取日期,您可以直接将其传递到date()函数,如下所示:

echo date('F/j/Y',$result['mydatefield_timestamp']);

希望有所帮助。