2013-09-29 132 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!