2015-06-18 136 views
0

當用戶首次創建其帳戶時,它默認將當前時間戳放入時間戳類型「日期」字段中。從當前時間戳獲取日期時間默認

如果字段類型是「datetime」,它不會允許我將當前日期時間設置爲默認值。我只能用「時間戳」來做到這一點。

但現在我需要使用需要日期時間格式的date_diff()。有沒有辦法將時間戳結果轉換爲日期時間,所以我可以把它放入date_diff?

我可以手動返回到創建新帳戶的每個頁面,並使其找到當前日期,然後將其放入日期時間字段,但這顯然是更多的工作(我會這樣做,如果必要)。

沒有任何代碼可以顯示。這裏就是我從數據庫中的值(函數發送查詢「SELECT日期從USER_LOGIN其中username = $用戶名」):

$udate = get_value("user_login", "date", "username", $_SESSION['user']['username']); 

返回的值是datetime格式的日期和時間,但沒有。所以,當我嘗試以下方法:

date_diff($udate, date(Ymd), true); 

它給人的錯誤

date_diff()預計參數1是DATETIME,串給出

+0

顯示一些代碼? – Alex

+0

或者換個說法,你如何將「2015-06-17 12:38:54」轉換爲可以和date_diff()一起使用的日期時間值? – thinkofacard

+0

也許[strtotime](http://php.net/manual/en/function.strtotime.php) – Alex

回答

0

它不會讓我如果字段類型爲「datetime」,則將當前日期時間設置爲默認值。我只能用「時間戳」來做到這一點。

MySQL將允許您指定一個DATETIME的字段,默認值爲NOW()。這將由MySQL翻譯爲CURRENT_TIMESTAMP

然後,當創建用戶時,MySQL會自動將CURRENT_TIMESTAMP插入date字段。

MySQL Date and Time Functions NOW()


編輯:

它看起來像你的問題是與date_diff本身。您必須提供前兩個參數,類型DateTime,但您的MySQL數據庫中的時間戳記表示是string。創建一個DateTime對象並將其作爲參數傳遞:

$udate = new DateTime(get_value("user_login", "date", "username", $_SESSION['user']['username'])); 
$now = new DateTime(); 

$diff = date_diff($udate, $now, true); 

// Will spit out difference in days 
echo $diff->format('%d days');