使用类型转换编辑时间值的问题

时间:2011-08-20 21:24:51

标签: 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/%d/%Y %h:%i' ) 
WHERE id=".$e;
$update_results = mysql_query($updatestring);
header("Location: event.php?e=".$e);
?>

当通过脚本输入值时,所有pm事件都将转换为am。

示例

INPUT = 08/20/2011 04:00 pm
OUTPUT = 08/20/2011凌晨4:00

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

部分代码在我的创建事件脚本中正常工作。谁能告诉我为什么它不能在这种情况下工作?

2 个答案:

答案 0 :(得分:1)

基本上,您将更多数据传递给MySQL而不是解释如何处理。您正在通过“8/20/2011 04:00 pm”,但仅提供足够的信息来解释“8/20/2011 04:00”部分。由于MySQL不知道如何处理“pm”,它只是忽略它并做出错误的假设,默认为AM。

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

试试这个:

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

答案 1 :(得分:0)

select str_to_date('08/20/2011 04:00 pm','%m/%d/%Y %I:%i %p') -- 2011-08-20 16:00:00

给出正确的日期时间。