php - mktime() 到 mysql 日期时间列?

标签 php mysql datetime mktime

我不知道这是否可能,但我正在尝试为每个用户分配不同的日期,因为这些日期是使用循环输入到数据库中的(我知道这是可能的)。为此,我正在使用 mktime() 构建时间戳,但我的列是 datetime(用于 MySQL ORDERBY timestamp DESC),当然,这两者不会放在一起。

我的代码:

<?php
    foreach($arr as $user_uid => $num) {
      $i = 1;
        while($num > 0) {
          $i++;
          $t = new DateTime("Y-m-d H:i:s", date(mktime(0, 0, 0, $i, 1, 2012)));
          $num--;
        }
     }
?>

此时返回:0000-00-00 00:00:00。

任何帮助将不胜感激,谢谢!

编辑: 金额已更改,我的代码现在如下所示:

foreach($arr as $user_uid => $num) {
    $i = 1;
        while($num > 0) {
            $i++;
            $t = date('Y-m-d H:i:s', mktime(0, 0, 0, $i, 1, 2012));
            $num--;
        }

$game = "INSERT INTO wd_game_$gid (game_uid,user_uid,lastmove,startcountry,money) VALUES ('$gid','$user_uid',FROM_UNIXTIME('$t'),'$rand_c','$money')";

现在插入:1970-01-01 00:00:00

最佳答案

解决方案 1 - 使用 FROM_UNIXTIME()在数据库层

您可以在数据库端执行此操作,使用 FROM_UNIXTIME()函数(参数是 Unix 纪元时间戳,因此这与您的 mktime() 的结果相同)。

解决方案 2 - 修复当前代码

您的代码也不正确,因为您将错误的日期传递给了 DateTime构造函数(参见 the documentation )。你通过"Y-m-d H:i:s"而不是 date('Y-m-d H:i:s', mktime(0, 0, 0, $i, 1, 2012)) .您甚至可以放弃使用 DateTime并坚持使用 date('Y-m-d H:i:s', mktime(0, 0, 0, $i, 1, 2012)) ,因为这足以用于您的数据库插入。

关于php - mktime() 到 mysql 日期时间列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103497/

相关文章:

mysql - 如何在 MySQL 中选择 DateTime.MinValue (01/01/1970)?

php - 如何使用带有 CONVERT_TZ() 的 MySQL 获取每天的最后一个条目

php - Codeigniter 事件记录 : adding a dynamic variable to result name

php - 客户端系统详情

mysql - SQL 查询未给出所需结果

php - 日期时间默认为 1970-01-01

php - 如何删除 Magento 中所有产品的所有自定义选项

php - 将 2 个 Select 语句与不同的 Where 子句连接在一起并在 While 循环中使用

mysql - 设计 MySQL 数据库的技巧

php - 按其他时间范围将时间范围拆分为多个部分