我正在使用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' )
部分代码在我的创建事件脚本中正常工作。谁能告诉我为什么它不能在这种情况下工作?
答案 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
给出正确的日期时间。