-2

我的“用户”表如下所示。

 id   |   name  |   time

 1    |    a1   |  2012-11-15 06:20:28

 2    |    a2   |  2012-11-14 06:20:28

 3    |    a3   |  2012-11-13 06:20:28

现在我的问题是,如何获取时间在当前时间或比当前时间少 30 秒之间的用户详细信息..

我试过了..

"SELECT * 

FROM user

WHERE strtotime(user_session.session_timestamp)-30 < ".time().")";

它不工作......它会抛出语法错误

请帮我解决问题

4

3 回答 3

5

不需要 PHP。您可以使用MySQL 日期和时间函数

SELECT * FROM user WHERE time BETWEEN (NOW() - INTERVAL 30 SECOND) AND NOW();

注意:此查询未优化,因为日期函数会阻止查询被缓存。如果这是一个大问题,那么使用 PHP 等效项可能会更高效。

于 2013-02-19T18:53:16.913 回答
0

strtotime() 是一个 PHP 函数,而不是 MySQL。

于 2013-02-19T18:54:41.803 回答
0

你不能那样做。你需要做两个不同的SELECT陈述。一个来收集user_session.session_timestamp。调用 PHPstrtotime()函数-30,然后在当前SELECT语句中使用该变量。根据您进行此设置的方式,您可能会使用 aforeach( $array as $key => $value)来逐步执行并运行尽可能多的选择以获得单独的回报。许多问题是在 SQL 语句中使用的 PHP 函数。

或者按照杰森说的去做!纯 SQL 总是更好,但我假设您出于某种原因需要或想要使用 PHP,有时需要访问 PHP 中的数据的重要原因。

于 2013-02-19T18:57:15.647 回答