繁体   English   中英

计算比较sql时间戳和php日期(“ ymd h:i:s”)

[英]calculation comparing sql timestamp and php date(“y-m-d h:i:s”)

有没有办法查看是否在PHP中((当前时间-数据库中的时间戳)> 10分钟)? 我在名为锁定的数据库中有一行。 到目前为止,我有以下代码:

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    

此外,还有人有什么主意,为什么当我在数据库中插入当前时间戳时,大约需要半个小时,但是日期和年份却正确?

SQL答案可能取决于您使用哪种SQL技术。 要在PHP中而不是SQL中执行此操作,可以使用DateTimediff()方法

$datetime1 = new DateTime($row['lockout']);
$datetime2 = new DateTime(date("Y-m-d H:i:s"));
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%i minutes');

在PHP中,您可以将strtotime函数与相对格式(例如- 10 minutes以获得所需的Unix时间戳:

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

在php中使用http://www.php.net/manual/zh-CN/book.datetime.php datetime类这具有diff方法

如果您的SQL方言是MySQL,请使用

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

或类似的PHP。

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

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位于不同的主机上)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM