2013-09-29 38 views
2

我有以下問題。我有一個字符串,其中包含時間和日期如下: dd/MM/yh hh:mm:ss 這是我在PHP中的。然後我有一個MySQL數據庫,它有一個日期時間格式的列,我需要插入這個值。顯然問題是,格式不同,所以不是實際日期,而是導致字段「0000-00-00 00:00:00」。日期時間格式PHP和MySQL

你能幫我轉換這個字符串,然後正確地插入到MySQL中嗎? 對於MySQL,我使用標準的INSERT INTO命令。

+0

聽起來像是你將不得不解析字符串並根據您獲得的值建立新的日期?看起來並不那麼困難。 – MightyPork

回答

1

編寫一個函數來轉換日期,

function sqldate($date) 
{ 
    $sql_date = date('Y-m-d H:i:s',strtotime($date)); 
    return $sql_date; 
} 

,且查詢的樣子,

$query = "INSERT INTO tableName (dateColumn) VALUES('".sqldate($date)."') "; 
+0

strtotime()會將xx/yy/zz視爲美國格式的日期(mm/dd/yy)而不是英國格式(dd/mm/yy)...您需要用' - 替換'/' '英國日期被正確識別(dd-mm-yy) –

+0

出於某種原因,如果我回顯字符串我得到: – Jachym

+0

@ user2370078讓我知道你傳遞給函數? – devo

0

可以使用STR_TO_DATE()轉換它與你INSERT聲明,例如,沿着。

INSERT INTO tableName (dateColumn) 
VALUES(STR_TO_DATE('dd/MM/yy hh:mm:ss','%d/%m/%y %H:%i:%s')) 
0

試試這個:

$parsedDate = date('Y-m-d H:i:s', strtotime($yourDate)); 
// Insert $parsedDate into your table column Date 
+1

strtotime()會將xx/yy/zz視爲美國格式的日期(mm/dd/yy)而不是英國格式(dd/mm/yy)...您需要用' - 替換'/' '英國日期才能被正確識別(dd-mm-yy) –

4

DATETIME文檔:

MySQL的檢索和顯示DATETIME VALU es的格式爲YYYY-MM-DD HH:MM:SS

我會使用PHP的DateTime類和DateTime::createFromFormat()方法,並將數據轉換到MySQL兼容的日期字符串,像這樣:

$date = DateTime::createFromFormat('d/m/Y H:i:s', $yourDateString); 
$dateToBeInserted = $date->format('Y-m-d H:i:s'); 

Demo!