我用挪威语编写基于文本的黑手党游戏,需要时间检测方面的帮助。所以这是交易。如果玩家购买产品的时间超过午夜(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;
}
那么,有没有更好的方法呢?是否应考虑使用时间()?它真的是如何做到这一点,我的问题是。 问候。 ;)
答案 0 :(得分: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进行MySQL时间比较。但不是两者兼而有之,因为两者之间允许的时间差异。 (它们有时会在没有错误的情况下关闭一个小时。)
答案 1 :(得分:1)
您可能需要添加cronjob或在SELECT
之前运行此查询以删除旧记录。
DELETE FROM `t1` WHERE DATE(`created`) < CURDATE();
也可以使用JOINS ......