【问题标题】:Problems editing Time Value with type conversion使用类型转换编辑时间值时出现问题
【发布时间】:2011-08-20 21:24:51
【问题描述】:

我正在使用 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。

示例

输入= 2011 年 8 月 20 日下午 4:00
输出= 2011 年 8 月 20 日凌晨 4:00

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

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

【问题讨论】:

    标签: php mysql


    【解决方案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' )
    

    【讨论】:

    • 哇哦!你当然是对的,我完全错误地阅读了这篇文章。删除我的。
    • 我在 [PHP] 标签上花费了相当多的时间。你不知道我等了多久@Pekka。胜利是我的! :)
    【解决方案2】:
    select str_to_date('08/20/2011 04:00 pm','%m/%d/%Y %I:%i %p') -- 2011-08-20 16:00:00
    

    给出正确的日期时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2021-08-04
      • 2012-09-03
      相关资源
      最近更新 更多