2011-09-10 71 views
5

Drupal新手問題。我試圖將當前日期/時間作爲unix時間戳插入到SQL數據庫中。它的工作原理是我沒有收到錯誤,但它每次都插入相同的值(2147483647)。我正在一個本地主機(如果有差別),並曾嘗試以下,都無濟於事:Drupal 7 - 如何插入unix時間戳到數據庫中

format_date(strtotime('now'), 'custom', 'YYYY-MM-DD 00:00:00'); 

format_date(time(), 'custom', 'YYYY-MM-DD HH:MM:SS'); 

format_date(mktime(), 'custom', 'YYYY-MM-DD HH:MM:SS'); 
+1

看起來像我回答了我的問題。而不是這些format_date(....)中的任何一個;我用REQUEST_TIME,它似乎工作。 – purplerice

+0

format_date(strtotime('now'),'custom','Y-m-d H:i:s')可能會起作用。 YYYY-MM-DD不適用於該函數的有效語法。 –

回答

3

PHP函數時間()返回當前的UNIX時間戳。相當於strtotime(「現在」)。 如果要在數據庫中插入當前時間戳,則可以使用默認選項CURRENT_TIMESTAMP在數據庫中創建字段,或者直接在SQL中編寫my_time_stamp_field = NOW()。

而且......如果你有一個自定義日期,你可以使用mktime()http://www.php.net/manual/en/function.mktime.php Unix時間戳是一個int值,你比如你要一個格式化過的時間,如果是這樣的情況下,使用日期('YYYY- MM-DD HH:MM:SS',time()/ unix timestamp /)。

希望它有幫助。

1

只是想提供更多的細節與purplerice的意見。

我們可以使用REQUEST_TIME - 從Unix Epoch開始以秒爲單位的當前請求的時間。

http://api.drupal.org/api/drupal/includes!bootstrap.inc/constant/REQUEST_TIME/7

$inserted_val['other_value'] = 'other value'; 
    $inserted_val['last_update_date'] = REQUEST_TIME; 
    db_insert('tablename')->fields($insert_fields)->execute(); 
+1

只發現在node.module行1018,drupal 7.12他們使用** strtotime **'$ node-> created =!empty($ node-> date)? strtotime($ node-> date):REQUEST_TIME;' – cww

1

我知道這是一個古老的,但如果有人在這裏停留,也許我可以用另一種解決方案幫助:

一個MySQL時間戳已經被格式化爲:

format_date(time(), 'custom', 'Y-m-d 00:00:00')