【问题标题】:store unix timestamp from php file into mysql将 php 文件中的 unix 时间戳存储到 mysql 中
【发布时间】:2011-10-12 15:11:26
【问题描述】:

现在我有这个代码:

$mysqldate = date(time());

mysql_query("INSERT INTO permissions (date)
VALUES ('$mysqldate')");

我在插入之前就逃脱了,但我的问题是时间被存储为全 0。我想知道 mysql 中的列数据类型会存储如下内容:

1311602030

一个 unix 时间戳,然后将允许我按查询的最近日期排序。

【问题讨论】:

  • 有什么理由不想使用 mysql 时间戳?
  • date 列的数据类型是什么?您正在尝试插入一个整数。另外,我强烈建议使用 DATETIME 或 TIMESTAMP 列而不是存储整数。您可以使用 MySQL 函数 NOW() 将当前时间插入 DATETIME/TIMESTAMP 列。

标签: php mysql


【解决方案1】:

如果数据库中的时间戳列是 INTEGER 类型,你可以这样做

mysql_query("INSERT INTO permissions (date) VALUES ('".time()."')");

作为整数值,您还可以进行排序操作并通过date() 函数将其从 PHP 转换回可读的日期/时间格式。 如果数据库中的时间戳列是 DATETIME 类型,您可以这样做

mysql_query("INSERT INTO permissions (date) VALUES ('".date('Y-m-d H:i:s')."')");

mysql_query("INSERT INTO permissions (date) VALUES (NOW())");

【讨论】:

    【解决方案2】:

    试试:

    mysql_query("INSERT INTO permissions (date) VALUES ('".$mysqldate."')");
    

    【讨论】:

      【解决方案3】:

      date() 函数需要一个字符串作为第一个参数,即格式。 time() 应该是第二个参数,例如:date('Y-m-d H:i:s', time())。这将返回一个字符串,您可以将其与 DATETIME 列一起使用。除此之外,如果要存储 unix 时间戳,只需使用 INT 列。因此您可以直接存储 time() 的结果,而无需调用 date。 (或者,正如我之前所说,使用具有有效格式字符串的 date() 格式化时间戳,并使用 DATE、DATETIME 或 TIMESTAMP 列)。请参阅:http://www.php.net/manual/en/function.date.phphttp://dev.mysql.com/doc/refman/5.1/en/datetime.html

      编辑:您看到的 0 是因为 mysql 无法识别您用于该列的格式(因此,如果您使用 DATE 列但您传递的格式错误,则无法识别,所以一个 0 被保存)

      【讨论】:

        【解决方案4】:

        试试:

        $mysqldate = date('Y-m-d H:i:s'); 
        mysql_query("INSERT INTO permissions (date) VALUES ('$mysqldate')");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-15
          • 2017-06-14
          • 2012-03-10
          • 2010-11-19
          • 2011-05-10
          • 2011-09-25
          相关资源
          最近更新 更多