2014-09-19 127 views
-1

我試圖在數據庫中使用PDO插入註冊時間。 這是我的代碼。PDO-在數據庫中插入UNIX_TIMESTAMP

<?php 
$sql = "INSERT INTO members(firstname,email,pass_hash,user_activation_hash,user_registration_datetime,user_registration_ip,user_agent) VALUES(:fname,:email,:passhash,:user_activation_hash,now(),:user_registration_ip,:user_agent)"; 
$result = $dbh->prepare($sql); 
$result->execute(array(':fname'=>$fname,':email'=>$email,':passhash'=>$hdacc,':user_activation_hash'=>$user_activation_hash,':user_registration_ip'=>$ip,':user_agent'=>$user_agent)); 

這將插入user_registration_datetime的格式爲2014年9月19日16點二十零分21秒,但我想它在UNIX_TIMESTAMP format.Here的是我的嘗試,

UNIX_TIMESTAMP (NOW()) // instead of now() 

這並不適用於工程me.It只需在數據庫中插入0000-00-00 00:00:00。

+0

什麼是註冊字段的字段類型?如果這是一個日期時間,它總是最終看起來像這樣格式化;一個unix_timestamp是一個整數。 – Erik 2014-09-19 15:05:26

+0

@Erik嘿嘿,這是datetime,我只是注意到它,我把它改爲int(),並且工作正常。非常感謝你。 – user3370495 2014-09-19 15:11:36

+0

@請將您的評論發佈爲answer.Thanks again .. – user3370495 2014-09-19 15:13:19

回答

0

函數NOW()生成一個格式化的日期時間字符串,由您的MySQL服務器的時區決定。如果你正在

0000-00-00 00:00:00

也許你的時區設置不

在我看來,這將是最好使用存儲時間UNIX_TIMESTAMP (),格林尼治標準時間。

如果你仍然想使用DATETIME列,您可以存儲使用UTC_TIMESTAMP()倍(它的格式,如日期NOW(),但表示它在UTC);它應該或多或少地在所有其他方面工作相同。

0

如果您希望您的日期存儲爲一個時間戳,你需要使用一個整數字段,如UNIX_TIMESTAMP被存儲爲一個整數(自1970年1月1日的秒數,特別是)

如果您使用DATETIME字段,它將始終以格式化的日期存儲。