【问题标题】:php date formatphp日期格式
【发布时间】:2010-09-13 11:32:37
【问题描述】:

我正在尝试将当前日期从 php 表单插入到数据库中。

我的查询是:

   $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', 'date()')";

这会产生以下内容: 0000-00-00 00:00:00 这显然是不正确的。

谁能推荐如何让它显示正确的日期/时间?

另外,我需要以下格式:yyyymmddhhmmss - 这可能吗?我该怎么办?

谢谢!

【问题讨论】:

  • 最通用的解决方案总是使用 UNIX_TIMESTAMP。当您以这种格式存储日期时,您可以用它做任何事情。
  • 这与您的问题无关,但非常重要:确保您永远不会将 PHP 变量直接插入到 SQL 查询中。总是使用 mysql_real_escape_string($your_variable) 转义它们。
  • 嗨,我该怎么做呢?在数据库端,该字段设置为 TIMESTAMP。
  • @slosd - 感谢您的建议!完成后我将插入此内容。现在我只专注于让查询工作! :)

标签: php mysql datetime


【解决方案1】:

您应该使用 php 的函数 time() 或 mysql 的 UNIX_TIMESTAMP 这是一个 int(11) 并像这样使用:

INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', UNIX_TIMESTAMP --

然后在 PHP 循环期间使用 date() 函数从 php 创建一个可视时间戳。

【讨论】:

    【解决方案2】:

    使用SQLNOW()函数:

    $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', NOW()";
    

    【讨论】:

    • 当然 - 如果字段不是 DATETIME,最好使用其他答案中的格式。
    【解决方案3】:
    $date = date ( 'Y-m-d H:i:s'); 
    $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', '$date')";
    

    【讨论】:

    • 注意 OP 的问题:“我需要以下格式:yyyymmddhhmmss”
    • 从数据库中选择回来时,您可以将其转换为您喜欢的任何格式
    • 嗨 Denis,我是否应该将数据库中的字段设置为 TIMESTAMP 以外的其他值才能正常工作?谢谢!
    • 我在 MySql 中使用 DATETIME 类型,但它也应该与 TIMESTAMP 一起正常工作。也许您甚至不需要在 PHP 中生成日期,您可以使用 CURRENT_TIMESTAMP 和 TIMESTAMP 阅读此内容以获取更多信息:dev.mysql.com/doc/refman/5.0/en/timestamp.html
    【解决方案4】:

    date()的使用参考PHP手册:http://php.net/manual/en/function.date.php

    所以根据您的需要,它会是这样的:

    $date = date("YmdHis");
    $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', '$date')";
    

    您也可以考虑 Fabrik 的建议。使用 UNIX 时间戳可能是最可靠的方法。

    【讨论】:

      【解决方案5】:
      $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', 'date(dmy)')";
      

      $time = date('Ymd g:i');
      $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', " .$time . ")";
      

      【讨论】:

        【解决方案6】:

        我假设您的 date 列实际上是 mysql DATETIME 类型。

        $sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', NOW())";
        

        应该这样做。

        您可以将其存储为 DATETIME 类型(您将看到它为 yyyy-mm-dd hh:mm:ss),然后在从数据库中 SELECT 时将其格式化为 yyyymmddhhmmss

        SELECT DATE_FORMAT(date, '%Y%m%d%H%i%s') FROM orderDetails
        

        http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

        【讨论】:

        • @fabrik 请问为什么你在我的第二个 sql 字符串中添加了 `` ,而它已经被标签了?我还是新手,所以我错过了一些格式约定吗?
        • 虽然它被 `s 包围,但它没有被解析为代码 sn-p。现在重新编辑一下就好了。
        猜你喜欢
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 2023-03-24
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        相关资源
        最近更新 更多