0

我有一个简单的问题,只需要验证,它是关于时间如何存储在 mysql 中的,这是我存储它的方式:

  if(isset($_SESSION['user']))
{
$u_id=$_SESSION['user'];
//insert current time to db, i set the type of time to TIME 
$query="INSERT INTO time(id,u_id,time) VALUES('NULL','".$u_id."',CURTIME())";
mysql_query($query);
}

这就是我存储它的方式,现在我还需要将它与一个值进行比较,稍后:

 //set current time
$curr_time=time();
//set maximum time to 5min
$max=300; 
//get previous time from db
$query="SELECT * FROM time";
$result=mysql_query($query);
$row=mysql_fetch_array($result); 
$prev_time=$row['time'];
//get difference in time
$diff=$curr_time-$prev_time;
//if max time is surpassed
if($diff>$max)
{
  echo "maximum time surpassed!";

    }  

这是简单的代码,首先,是将时间插入表的语法好吗(CURTIME()东西),比较也很好,存储在$diff中的结果会产生秒数吗?谢谢,如果你认为这个问题是浪费时间。

4

4 回答 4

3

CURTIME()只会给你时间,你可能想要NOW()的是日期和时间。然后,您将需要使用strtotime将保存的值从数据库转换为自纪元以来的秒数。

于 2012-11-06T08:42:51.163 回答
1

在您的查询中执行此操作:

 $query = "SELECT id FROM time WHERE time + INTERVAL 5 MINUTES > NOW()";

是不是没有结果,时间已经过去了。

MySQL 具有极好的时间和日期处理功能。使用它们。

(我还会在WHERE子句中添加一些额外的部分,如果您有多个记录,您可能会查看错误的记录。)

于 2012-11-06T08:43:37.850 回答
0

由于 CURTIME 只是每天一次,我怀疑你希望你的函数覆盖几天的跨度,我建议你使用 NOW() 代替,因为它给你这种格式:

2012-11-06 09:39:34

于 2012-11-06T08:44:20.497 回答
0
 also is the comparison fine, will the result stored in $diff yield seconds?

您不能直接将 mysql CURTIME() 与 PHP 中的 time() 函数进行比较。

例如:

在 MySql 中:

CURTIME()将只返回时间。

select CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 14:15:11  |
+-----------+

在 PHP 中

time()将返回当前的 Unix 时间戳。

echo time();
1352191547

看看 sberry 对同情的回答。

于 2012-11-06T08:59:16.037 回答