0

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

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    

此外,有没有人知道为什么当我在我的数据库中插入当前时间戳时,它大约要休息半小时,但日期和年份是正确的?

4

5 回答 5

2

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

$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');
于 2013-05-12T22:01:32.893 回答
1

在 PHP 中,您可以使用具有相关格式strtotime函数来获取所需的 Unix 时间戳:- 10 minutes

if ( strtotime('- 10 minutes') < strtotime( $row['lockout'] ) ) ...
于 2013-05-12T22:06:56.260 回答
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 位于不同的主机上)。

于 2013-05-12T21:49:07.633 回答
0

如果您的 SQL 方言是 MySQL 使用

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

或 PHP 中的类似内容。

于 2013-05-12T21:39:47.100 回答
0

在 php 中使用http://www.php.net/manual/en/book.datetime.php日期时间类 这有一个 diff 方法

于 2013-05-12T21:37:26.930 回答