1

我用挪威语编写了一个基于文本的黑手党游戏,需要时间检测方面的帮助。所以这是交易。如果玩家购买产品后的时间已超过午夜(24 小时制),则可以删除 mysql 记录。这是我尝试过的,但不确定这是最好的方法:

// Har livvakt? (Has bodyguard)
if($this->isTheftProtected($user_id)){
  $sql = mysql_query("SELECT * FROM `UserTing` WHERE t_meta = '2' AND t_owner = '".$user_id."'");
  $rows = mysql_fetch_array($sql);

  $timeThen = date("Hi", $rows["t_time"]);
  $theNow = date("Hi");

  if($timeThen > 0000){
    // Slett produktet <- Delete here... past midnight.
  } else {
    // Behold.
  }
} else {
  return;
}

那么,有没有更好的方法。应该考虑使用 time() 吗?我的问题是如何做到这一点。问候。;)

4

2 回答 2

1

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff

mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');

返回 128885

所以逻辑上;

SELECT * FROM UserTing WHERE TIMESTAMPDIFF(SECOND, NOW(), t_time) >= (60 * 60 * 24) AND t_owner = {$user_id}

为 t_owner 显示比当前时间早 24 小时的值。

编辑 3:确保您始终使用 MySQL 与 MySQL 或 PHP 的时间比较。但不是两者都有,因为两者之间存在允许的时间差异。(它们有时可以关闭多达一个小时而没有错误。)

于 2012-07-29T05:31:50.057 回答
1

您可能需要添加 cronjob 或只运行此查询才能SELECT删除旧记录。

DELETE FROM `t1` WHERE DATE(`created`) < CURDATE();

也可以使用JOINS...

于 2012-07-29T05:55:47.053 回答