我的"用户"表如下所示。。
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().")";
它不起作用。。。它将抛出语法错误
请帮我解决问题
不需要PHP。您可以使用MySQL的日期和时间函数。
SELECT * FROM user WHERE time BETWEEN (NOW() - INTERVAL 30 SECOND) AND NOW();
注意:此查询未进行优化,因为日期函数阻止缓存查询。如果这是一个很大的问题,那么使用PHP等效程序可能会更高性能。
strtotime()是一个PHP函数,而不是MySQL。
你不能那样做。您需要执行两个不同的SELECT
语句。一个用于收集user_session.session_timestamp
。调用PHP strtotime()
函数-30
,然后在当前的SELECT
语句中使用该变量。根据您的设置方式,您可能会使用foreach( $array as $key => $value)
逐步完成并运行所需的选择,以获得单独的回报。许多问题是SQL语句中使用的PHP函数。
或者照杰森说的做!纯SQL总是更好的,但我认为您出于某种原因需要或想要使用PHP,需要访问PHP中的数据有一些重要的原因。