【问题标题】:MySQL Date FormatMySQL 日期格式
【发布时间】:2011-10-20 03:18:05
【问题描述】:

我的 HTML 表单上有一个字段,要求用户输入日期为 dd/mm/yyyy。然后我运行一个 PHP 脚本,将数据保存到一个 mySQL 数据库,或者如果我可以解决我在日期格式方面遇到的问题。

我知道默认情况下,mySQL 数据库将日期保存为 yyyy-mm-dd,但有人可以告诉我如何继续将用户输入日期格式保持为 dd/mm/yyyy,但是当它遇到数据库它已正确转换为 mySQL 日期格式。

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    使用 PHP 运行您的格式化。在将其插入数据库之前,为 MySQL 重新格式化数据:

    $mydate = new DateTime($userdate);
    $mydate = $mydate->format("Y-m-d");
    

    如果您需要从数据库中获取它,只需以类似的方式将日期格式改回即可。

    【讨论】:

    • 所有,非常感谢您抽出宝贵时间回复并提供您的建议,非常感谢。我必须承认我在 PHP 和 mySQL 方面是非常新的,并且我已经了解了我需要对日期数据做些什么,这并不是什么大问题。由于这一点以及我目前缺乏知识,我决定将数据保存为 VARCHAR。我知道这可能不是保存信息的最明智的方法,但目前它会满足我的需要,直到我获得更多经验。再次感谢您的时间和麻烦。问候克里斯
    【解决方案2】:

    我也遇到过这个问题。我的解决方案是将用户输入的字符串转换为 Unix 时间戳,然后使用 PHPs date() 函数将其转换为 MySQL 兼容格式。

    要将字符串转换为 Unix 时间戳,您可以使用 strtotime 或者如果您更熟悉面向对象编程,则可以使用 DateTime::createFromFormat 工厂函数。根据我的经验:strtotime 可以胜任

    现在您需要将返回的时间戳转换回 MySQL 格式。这很简单:

    $sqldate = date("Y-m-d", $timestamp);
    

    【讨论】:

    • strtotime 仅支持非常有限的日期范围(“它会完成这项工作”是不够的),而DateTime 具有程序多样性。
    【解决方案3】:

    The format of mysql is indeed 'YYYY-MM-DD'

    我建议如下(未经测试):

    $userInput = '24/12/2004';
    date('c',  date_parse($userInput));
    

    明智的做法是使用准备好的语句并将日期直接发送到准备好的语句。唉,Php-MySQL prepared statements don't allow for a date type

    【讨论】:

      【解决方案4】:

      试试这个:

      php > list($d,$m,$y) = explode("/","28/04/2011");
      php > echo date("Y-m-d",mktime(0,0,0,$m,$d,$y));
      2011-04-28
      

      【讨论】:

        【解决方案5】:

        您可以通过创建一个简单的函数来做到这一点——例如:

        function convertDate2Sql($date = null) {
            if (!empty($date)) {
                $date = explode("/", $date);
                return implode("-", array_reverse($date));
            }
        }
        

        显然,您必须确保如果您使用不同的日期格式,即美国的日期格式为前一个月,那么您必须在使用 explode() 函数后手动重新排列 $date 数组中的值,但如果它的格式和你上面所说的一样,那么使用 array_reverse() 就可以了。

        【讨论】:

          【解决方案6】:

          我找到了一个 jquery,它允许我设置日期的格式,使我能够设置存储在我的数据库中的数据的标准。

          【讨论】:

            猜你喜欢
            • 2017-12-17
            • 2011-07-19
            • 2013-12-24
            • 2023-03-29
            • 1970-01-01
            • 1970-01-01
            • 2023-03-24
            • 1970-01-01
            相关资源
            最近更新 更多