将时间存储到数据库并与当前时间进行比较

时间:2012-11-06 08:37:19

标签: php mysql

我有一个简单的问题,只需要验证,它是关于如何在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!";

    }  

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

没有结果,时间过去了。

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

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

答案 2 :(得分:0)

由于CURTIME只是每天都有,而且我怀疑你希望你的功能能够覆盖几天的时间,我建议你使用NOW(),因为它会为你提供这种格式:

2012-11-06 09:39:34

答案 3 :(得分:0)

 also is the comparison fine, will the result stored in $diff yield seconds?

你不能直接比较PHP中的mysql CURTIME()和time()函数。

例如:

在MySql中:

CURTIME()只会返回时间。

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

在PHP中

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

echo time();
1352191547

看看sberry对同情心的回答。