【问题标题】:STR_TO_DATE MySQL swaps Month/Day valuesSTR_TO_DATE MySQL 交换月/日值
【发布时间】:2014-10-16 05:47:48
【问题描述】:

GD 全部,

当使用 PHP 将我的数据插入 MySQL 数据库时,我使用 POST 方法将值传递给脚本。

使用 STR_TO_DATE 函数尝试将正确的日期插入 MySQL 中的日期字段

然而,尽管使用相同的格式传递给 STR_TO_DATE 函数 (dteReportDate=14-10-2014),MySQL 函数显然会在 monthvalue

因此,如果我将 14-10-2014 输入到导入 PHP 中,它会在表中正确读取为 2014-10-14 如果我在完全相同的例程中输入 09-10-2014 它将插入到表中作为 2014-09 -10 ??

如何在 PHP 脚本或其他任何地方更正此问题?

我尝试了几种选择: - 将 STR_TO_DATE 函数的输入更改为多种格式(YYYY/MM/DD、dd-mm-yyyy 等。错误保持不变 - 将输入数据直接更改为字符串以供输入: 即,而不是使用

    INSERT INTO tbl ('date') VALUES (STR_TO_DATE(dateString,'%Y/%m/%d')

你会使用

    INSERT INTO tbl ('date') VALUES (dateString)

根据 MySQL 默认设置,日期字符串的格式正确为“yyyy-mm-dd”。 (也不行)

那么如何正确编写脚本,以便我的输入字符串在 MySQL 中正确转换为日期格式??

非常感谢

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    SQL 数据库中接受的日期格式是Y-m-d(您会发现与PHP date 不同的日期格式)。

    如果数据来自提交的表单

    $date=date('Y-m-d',strtotime($_POST["date"]));
    

    如果您要插入的日期是今天并且是静态的

    $date=date('Y-m-d');
    

    您的查询将如下所示:

    INSERT INTO tbl ('date') VALUES ('$date')
    

    【讨论】:

      【解决方案2】:

      您使用 PHP 内置功能:

      $datevar=   date_create_from_format(); 
      

      之后,您可以使用 $date 变量以格式功能发布。

      $datevar->format()
      

      【讨论】:

        【解决方案3】:

        GD 全部,

        非常感谢您的回复,错误发生在流程的早期阶段。

        STR_TO_DATE 不是问题,而是传递的数据有问题。

        感谢您的回复!

        【讨论】:

          猜你喜欢
          • 2015-12-15
          • 1970-01-01
          • 1970-01-01
          • 2015-01-07
          • 1970-01-01
          • 2014-07-11
          • 2014-06-28
          • 2017-01-02
          • 2018-04-17
          相关资源
          最近更新 更多