2013-05-12 113 views
0

有没有办法在php中查看是否((当前时间 - 数据库中的时间戳)> 10分钟)?我在一个名为lockout的数据库中有一行。我有以下代码至今:计算比较sql时间戳和php日期(“y-m-d h:i:s”)

echo $row['lockout'];//returns 2013-05-12 22:04:17 
echo date("Y-m-d H:i:s")//returns 2013-05-12 22:06:32  

而且没有任何人有任何想法,为什么当我在数据库中插入当前时间戳,它是大约一个半小时关闭,但有正确的日期和年份?

回答

0

如果你的SQL方言MySQL的使用

... WHERE UNIX_TIMESTAMP(NOW())-lockout>=600 ... 

或PHP类似的东西。

0

在查询中这样做:

WHERE `lockout` < DATE_SUB(NOW(), INTERVAL 10 MINUTE) 

或者,如果你不能依靠MySQL的时间,使用

mysqli_query(' 
... WHERE `lockout` < DATE_SUB(FROM_UNIXTIME(' . time() . '), INTERVAL 10 MINUTE) ... 
'); 

或者,如果你一定要date(...),使用

mysqli_query(' 
... WHERE `lockout` < DATE_SUB(' . date('Y-m-d H:i:s') . ', INTERVAL 10 MINUTE) ... 
'); 

您可能想要比较MySQL和PHP的时区和服务器的时区(如果MySQL和PHP位于分区中te主机)。

+0

@卢卡斯我不是在SQL查询中进行计算比较。这是在我的PHP代码中的if语句。如果((日期(“​​Ymd H:i:s”) - $ row ['lockout'])> 600){ echo'

1

在PHP中您可以使用strtotime功能与relative formats- 10 minutes以获得所需的Unix时间戳:

if (strtotime('- 10 minutes') < strtotime($row['lockout'])) ...