2011-03-06 44 views
2

MySQL的文檔約NOW()函數...MySQL的NOW()返回只有年

返回當前日期和時間的值 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS .uuuuuu格式,取決於函數是用在字符串還是數字上下文中。該值以當前時區表示。

這裏是我的查詢......

$sql = " 

    INSERT INTO `users` (`username`, `password`, `email`, `time`) 
    VALUES ('{$username}', '" . sha1($password) . "', '{$email}', NOW()) 

"; 

的問題是,在數據庫中,我沒有完整的日期時間,但只有一年。任何解決方案

+1

你的日期字段是什麼類型?你能展示一個示例值嗎? – 2011-03-06 10:11:16

+0

嗯,美味的SQL注入。 – 2011-03-06 10:14:33

+0

@Sdaz MacSkibbons,就像我之前沒有驗證輸入... xD – daGrevis 2011-03-06 10:15:36

回答

5

它是int(10)就像它是當我使用UNIX時間戳。

NOW()僅適用於DATETIME字段。

你需要或者你的字段轉換爲DATETIME(優選法),或者轉換NOW()到使用UNIX_TIMESTAMP():

UNIX_TIMESTAMP(NOW()) 
1

一個UNIX時間戳嘗試

strtotime(now()) 

,你絕對應該使用timestampdatetime作爲您的專欄的類型。

4

我有同樣的麻煩,並且被困了最長的時間直到我讀這個問題。我使用mysql的now()函數來更新成員的最後登錄時間。

MySQL的NOW()返回的日期時間爲一個字符串,如YYYY-MM-DD HH:MM:SS - 沿線某處我停止使用這一點,並使用time() (UNIXTIME)開始(使得它更易於使用),返回一串數字,像1352254528。但是,您不能在日期時間字段中存儲這樣的數字字符串,並且同樣,您不能將YYYY-MM-DD HH:MM:SS存儲在int(11)字段中。後者將導致僅存儲一年。

最後,你應該使用:

int(11)如果你打算使用PHP的time()功能的時間存儲爲數字 或 DATETIME field如果你打算使用MySQL的NOW()函數的字符串。