2013-04-17 30 views
0

我正在使用PHP和mysql並使用DateDateTime將日期保存在mysql數據庫中。在網站上,我一直以顯示日期的方式保存在數據庫中。全局更改日期格式

但現在我想使用一種格式現場到處炫耀日期:

April 17 2013 

April 17 2013 12:20:50 

我知道我可以使用datestrtotime功能顯示在以上格式的日期。但是有很多地方我有日期顯示代碼。所以我正在尋找使我的當前代碼工作的過程自動化,並以上述格式顯示日期。

如何mysql的觸發或一些PHP魔術可以被創建,將所有日期通過SELECT查詢,而無需改變我的SQL或PHP代碼,因爲我在我的代碼有很多的地方,這將是矯枉過正自動運行的任何想法在所有地方更改代碼?

對於實施例:在DB保存

日期:2013年4月16日 12點41分26秒

SELECT QUERY:SELECT * FROM myTable

PHP:echo $row->dated;顯示器2013-04-16 12:41:26

我希望在不改變我的PHP代碼的情況下,日期應該以全局上面提到的格式顯示在整個站點上。

任何想法請問如何實現?

+0

問題通常應在應用層進行處理。只需以普通SQL格式返回日期,並使用您的應用程序代碼(php?或者可能是一些javascript?)來處理格式。我更喜歡任何允許用戶調整格式以適合其地區的方法。 – Strawberry

回答

4

您可以直接通過查詢使用DATE_FORMAT()

SELECT DATE_FORMAT(myDate, '%M %d %Y %h:%i') myDate 
FROM TableName 

格式化和迴響在你的PHP:$row->myDate


的MySQL觸發器沒有項目價值這只是f在CrUD操作期間發起。

+0

沒有時間回答:)+ 1 –

+0

這就是我喜歡的東西,每天都在學習新東西!不知道那個。 – vascowhite

+0

正如我所說的,我在代碼中有很多地方,我正在尋找可以自動爲我啓動的觸發器,這樣我就不必修改我的代碼。任何有關如何創建mysql觸發器的想法可以自動轉換通過'SELECT'查詢運行的所有日期? – Dev01

1

我想建議你一個我喜歡使用的替代方法。

您應該使用epoch時間。一個劃時代的時間是basicly已經通過的第二個數量,因爲1 January 1970

  1. 之一,如果我愛的好處是,它是很容易計算的時間 差異,因爲你是剛剛處理的 秒數和沒有複雜的格式,如sec min hrs

  2. 另一個好處是,這是很容易的,因爲它是一個 整數存儲,因此您可以將其存儲在SQL數據庫,有你的PHP代碼的理解而不用擔心格式和東西像那樣。

在php中,如果您使用time()函數,它將返回epoch時間。 如果你想用友好的方式顯示它。您可以使用以下代碼:

$epoch = time(); 
$dt = new DateTime("$epoch"); // convert UNIX timestamp to PHP DateTime 
echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00 

正如您所看到的,日期格式非常靈活,因此易於使用。

一個很好的例子來尋找日期1個星期前:

數據顯示
$epoch = time() - 604800; //604800 seconds = 7 days 
$dt = new DateTime("$epoch"); // convert UNIX timestamp to PHP DateTime 
echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00