【问题标题】:Converting dates with PHP for DATETIME in SQL在 SQL 中使用 PHP 为 DATETIME 转换日期
【发布时间】:2012-05-28 03:15:42
【问题描述】:

我有一个 PHP 论坛,它的日期类似于表单 dd/mm/yyyy hh:mm:ss。但是,我需要将它作为 DATETIME 以yyyy-mm-dd hh:mm:ss 的格式插入到 SQL 中。如何转换这些数据?

【问题讨论】:

  • 这已经被问了一百万次了。快速搜索即可找到您的答案。

标签: php mysqli sqldatatypes type-conversion


【解决方案1】:

您的日期时间格式错误:dd/mm/yyyy hh:mm:ss。可能你的意思是d/m/Y H:i:s

如果您有 5.3+ 版本,则可以安全地将日期时间转换为另一种格式。这是一个例子:

$timestamp = '31/05/2001 12:22:56';
$timestamp = DateTime::createFromFormat('d/m/Y H:i:s', $timestamp);
echo $timestamp->format('Y-m-d H:i:s');

或者如果你喜欢更程序化的方式:

$timestamp = '31/05/2001 12:22:56';
$timestamp = date_create_from_format('d/m/Y H:i:s', $timestamp);
echo date_format($timestamp, 'Y-m-d H:i:s');

注意以前的建议。有些是完全错误的,有些可能会导致错误。

【讨论】:

  • 澄清您可能在哪里遇到问题。当使用 strtotime() 分隔符很重要;在您的情况下,它是斜杠(/),意思是:美国格式为假定(m/d/Y)。如果分隔符为破折号 (-),则假定为欧洲格式 (d-m-Y)。所以,不要假设任何事情;)
【解决方案2】:

您可以使用 strtotime 和 date 来修改格式。

$new_date = date( "Y-m-d H:i:s", strtotime( $old_date ) );

它的作用是获取您的旧日期 (dd/mm/yyyy hh:mm:ss),将其转换为 unix 时间戳,然后可以与 php date 函数一起使用将日期格式化为所需的格式。

【讨论】:

  • 我无法让它工作它输出: string(33) "12121212-0505-0909 1212:0505:0000" From $startDatec= date("yyyy-mm-dd hh:mm :ss", strtotime($_POST['startEventDate']));
  • 对不起,实际格式是Y-m-d H:i:s 我的格式是为了说明它会返回什么。我的错。在这里查看日期函数 link 中的格式设置,所以它会是:$finalc= date("Y-m-d H:i:s", strtotime($_POST['finalDate']));
  • 您的建议可能会导致错误的转换。看看我在评论中写了什么。
  • 你是对的,假设常识会占上风。您使用 php 5.3+ 的实现可以完美运行,但我的解决方案适用于任何版本,并考虑到正确的考虑因素。
  • 我在一定程度上同意。与所有以前的版本一样,5.3+ 版迟早会取代 5.2+ 版。所以,也许最好提前考虑一下,你不觉得吗?
【解决方案3】:

几种可能的方法中的两种:

  1. 在代码中转换,然后将转换后的值传给mysql:$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
  2. 让 mysql 使用它的内置函数来完成这项工作: $query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) ...";

【讨论】:

    【解决方案4】:

    如果您可以从上述格式中获得日期时间,那么您只需要使用以下功能。

    function localToMysql($dateTime){
      $date_chunks = explode('/', $dateTime);
        $time_chunks = explode(' ', $date_chunks[2]);
        $final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1];
    

    返回 $final_format; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-05
      • 2013-05-14
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2015-10-27
      相关资源
      最近更新 更多