PHP和MySQL的日期时间格式

5
我有以下问题。我有一个包含日期和时间的字符串: dd/MM/yy hh:mm:ss 我使用PHP处理此字符串。然后,我有一个MySQL数据库,其中有一个datetime格式的列,我需要插入此值。显然,问题在于格式不同,因此结果是字段“0000-00-00 00:00:00”,而不是实际日期。
请问您能否帮我将此字符串转换并正确地插入MySQL中? 对于MySQL,我使用标准的INSERT INTO命令。

听起来你需要解析字符串并从获取的值构建新日期?看起来并不难。 - MightyPork
4个回答

7
根据DATETIME文档:

MySQL以YYYY-MM-DD HH:MM:SS格式检索和显示DATETIME值。

我会使用PHP的DateTime类和DateTime::createFromFormat()方法,并将数据转换为MySQL兼容的日期字符串,如下所示:
$date = DateTime::createFromFormat('d/m/Y H:i:s', $yourDateString);
$dateToBeInserted = $date->format('Y-m-d H:i:s');

2
编写一个函数来转换日期。
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)."') ";

strtotime() 函数将 xx/yy/zz 视为美国格式日期 (mm/dd/yy),而不是英国格式日期 (dd/mm/yy)。如果要正确识别英国日期 (dd-mm-yy),则需要将 / 替换为 - - Mark Baker
由于某些原因,如果我回显字符串,我会得到: - Jachym
请告诉我您将传递给函数的参数是什么? - Anshad Vattapoyil

0
你可以在INSERT语句中使用STR_TO_DATE()进行转换,例如:
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)。 - Mark Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接