【问题标题】:Date is inserting as 0000-00-00 00:00:00 in mysql日期在 mysql 中插入为 0000-00-00 00:00:00
【发布时间】:2013-06-09 05:57:50
【问题描述】:

我的$date 输出在 foreach 循环中

09/25/11、02/13/11、09/15/10、06/11/10、04/13/10、04/13/10、04/13/10、 09/24/09、02/19/09、12/21/08

我的mysql查询(PHP)如下

("INSERT INTO table_name(`field1`, `field2`,`date`) VALUES ('".$value1."','".$value2 ."','".$date."')");

问题:在我的数据库中,所有日期都存储为0000-00-00 00:00:00。但是第四个日期(06/11/10)存储为2006-11-10 00:00:00。

我尝试了date('Y-m-d H:i:s', $date);,但没有帮助。

注意:我的数据库字段是日期时间类型。 有什么想法吗?

【问题讨论】:

标签: php mysql


【解决方案1】:

您的 date('Y-m-d H:i:s',$date); 解决方案走在了正确的轨道上,但 date() 函数将时间戳作为其第二个参数,而不是日期。

我假设您的示例是美国日期格式,因为它们看起来是这样的。您可以这样做,它应该会为您提供您正在寻找的值:

date('Y-m-d H:i:s', strtotime($date));

它不起作用的原因是因为它需要 YYYY-MM-DD 格式的日期,并尝试以此评估您的数据。但是您有 MM/DD/YY,这让您感到困惑。 06/11/10 示例是您的示例中唯一可以解释为有效 YYYY-MM-DD 日期的示例,但 PHP 认为您的意思是 06 作为年份,11 作为月份,10 作为日期。

【讨论】:

    【解决方案2】:

    我为此创建了自己的函数,可能对您有所帮助:

    function getTimeForMysql($fromDate, $format = "d.m.y", $hms = null){
        if (!is_string($fromDate))  
            return null ;       
        try {
            $DT = DateTime::createFromFormat($format, trim($fromDate)) ;
        } catch (Exception $e) { return null ;}
    
        if ($DT instanceof DateTime){
            if (is_array($hms) && count($hms)===3)
                 $DT->setTime($hms[0],$hms[1],$hms[2]) ;
            return ($MySqlTime = $DT->format("Y-m-d H:i:s")) ? $MySqlTime : null ;
        }
        return null ;
    }
    

    所以在你的情况下,你使用格式 m/d/yy :

    $sql_date = getTimeForMysql($date, "m/d/yy") ;
    if ($sql_date){
      //Ok, proceed your date is correct, string is returned.
    }
    

    【讨论】:

      【解决方案3】:

      您的日期中没有世纪,请尝试像这样转换它:

      <?php
      $date = '09/25/11';
      $date = DateTime::createFromFormat('m/d/y', $date);
      $date = $date->format('Y-m-d');
      print $date;
      

      打印:

      2011-09-25
      

      现在您可以将 $date 插入 MySQL。

      【讨论】:

      • 我不会加00:00:00,没必要
      • @SamDufel 是的,它会被mysql自动设置。我删除了它。
      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多