Php 使用类型转换编辑时间值时出现问题

Php 使用类型转换编辑时间值时出现问题,php,mysql,Php,Mysql,我使用PHP和MySQL进入数据库并更改日期的值。需要将日期格式从用户界面转换到数据库。我用来转换并推送到数据库的代码是 <?php require_once("../../connect.php"); $e = $_GET['e']; $start = mysql_real_escape_string($_POST['start']); $updatestring = "UPDATE tbl_events SET start=STR_TO_DATE('".$start."', '%m/%

我使用PHP和MySQL进入数据库并更改日期的值。需要将日期格式从用户界面转换到数据库。我用来转换并推送到数据库的代码是

<?php
require_once("../../connect.php");
$e = $_GET['e'];
$start = mysql_real_escape_string($_POST['start']);
$updatestring = "UPDATE tbl_events SET start=STR_TO_DATE('".$start."', '%m/%d/%Y %h:%i' ) 
WHERE id=".$e;
$update_results = mysql_query($updatestring);
header("Location: event.php?e=".$e);
?>

部分代码在我的创建事件脚本中运行良好。有人能告诉我为什么在这种情况下它不工作吗?

基本上,你向MySQL传递的数据比你解释的要多。您通过了“2011年8月20日04:00 pm”,但只提供了足够的信息来解释“2011年8月20日04:00”部分。由于MySQL不知道如何处理“pm”,它只是忽略了它,并做出了一个错误的假设,默认为AM

MySQL使用
%p
表示格式的
AM/PM
部分。如果将其添加到函数调用中,它应该可以工作

试试这个:

start=STR_TO_DATE('".$start."', '%m/%d/%Y %h:%i %p' )

给出了正确的日期时间。

哇!你当然是对的,我读这篇文章的方式完全错误。删除我的。我花了相当多的时间在[PHP]标记上。你不知道我等你多久了@Pekka。胜利是我的!:)
start=STR_TO_DATE('".$start."', '%m/%d/%Y %h:%i %p' )
select str_to_date('08/20/2011 04:00 pm','%m/%d/%Y %I:%i %p') -- 2011-08-20 16:00:00