2011-03-17 127 views
21

我有列名爲postDate定義爲時間戳。 當我直接打印:格式mysql使用php的時間戳

echo $result['postDate']; 

我做得到,什麼是存儲 在另一方面,當我打印通過日期的功能(例如2011-03-16 16:48:24):

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

我得到December/31/1969

我在做什麼錯?

非常感謝

回答

56

試試這個。

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']); 
+0

不錯的提示,使它工作 – 2011-03-17 13:06:48

+0

嗯,做得好你打我一拳。爲你+1。我還推薦UNIX_TIMESTAMP()。當我開始我的答案時,你只有strtitime(),但是當我發佈它時,你還添加了SQL位。 – Spudley 2011-03-17 13:15:24

+0

偉大的思想想象一樣... hi5 @Spudley – DhruvPathak 2011-03-17 13:18:10

8

的PHP date函數查找一個int time()作爲第二PARAM。嘗試使用strtotime()

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

這是有用的知道,非常感謝 – 2011-03-17 13:07:09

0

的PHP`日期()」功能預計用於第二參數的數目 - 即一個Unix時間戳。

您可以使用strtotime()函數將SQL日期字符串(或幾乎任何其他日期字符串)轉換爲PHP中的時間戳。至少有兩個其他答案已經提出這個建議。

但是,我建議你最好先將數據以unix時間戳格式從數據庫中取出。您可以通過使用MySQL UNIX_TIMESTAMP()功能查詢做到這一點,如下所示:

SELECT UNIX_TIMESTAMP(mydatefield) AS mydatefield_timestamp FROM mytable 

..obviously,取代了字段和表名作爲合適的。

然後你會得到時間戳格式日期在PHP中,你返回的數據集,你可以直接進入date()功能如下:

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

希望有所幫助。

6

爲什麼不根據需要在MySQL查詢中格式化日期?

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

這似乎是迄今爲止最簡單的解決方案:D – 2016-12-17 01:47:48