【问题标题】:Datetime format PHP and MySQL日期时间格式 PHP 和 MySQL
【发布时间】:2013-10-05 12:41:10
【问题描述】:

我有以下问题。我有一个字符串,其中包含时间和日期,如下所示: dd/MM/yy hh:mm:ss 这是我在 PHP 中的。然后我有一个 MySQL 数据库,它有一个日期时间格式的列,我需要在其中插入这个值。显然问题是,格式不同,所以不是实际日期,而是字段“0000-00-00 00:00:00”。

您能帮我转换这个字符串,然后将其正确插入 MySQL 吗? 对于 MySQL,我使用标准的 INSERT INTO 命令。

【问题讨论】:

  • 听起来您必须解析字符串并根据获得的值构建新日期?看起来并不难。

标签: php mysql datetime


【解决方案1】:

来自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)
    • 出于某种原因,如果我回显我得到的字符串:
    • @user2370078 让我知道你传递给函数的内容是什么?
    【解决方案3】:

    试试这个:

    $parsedDate = date('Y-m-d H:i:s', strtotime($yourDate));
    // Insert $parsedDate into your table column Date
    

    【讨论】:

    • strtotime() 会将 xx/yy/zz 视为美国格式日期 (mm/dd/yy) 而不是英国格式 (dd/mm/yy)...您需要将 / 替换为 - 以正确识别英国日期 (dd-mm-yy)
    【解决方案4】:

    您可以使用STR_TO_DATE() 以及您的INSERT 语句来转换它,例如。

    INSERT INTO tableName (dateColumn)
    VALUES(STR_TO_DATE('dd/MM/yy hh:mm:ss','%d/%m/%y %H:%i:%s'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2014-03-02
      • 1970-01-01
      相关资源
      最近更新 更多