我的'用户'表看起来像是......
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或30之间的用户详细信息 第二次比现在的时间少..
我试过..
"SELECT *
FROM user
WHERE strtotime(user_session.session_timestamp)-30 < ".time().")";
它不起作用......它会抛出语法错误
请帮我解决问题
答案 0 :(得分:5)
不需要PHP。您可以使用MySQL Date and Time functions。
SELECT * FROM user WHERE time BETWEEN (NOW() - INTERVAL 30 SECOND) AND NOW();
注意:此查询不是优化,因为日期函数会阻止查询被缓存。如果这是一个很大的问题,那么使用PHP等价物可能会更高效。
答案 1 :(得分:0)
strtotime()是一个PHP函数,而不是MySQL。
答案 2 :(得分:0)
你不能这样做。您需要执行两个不同的SELECT
语句。一个收集user_session.session_timestamp
。调用PHP strtotime()
函数-30
,然后在当前SELECT
语句中使用该变量。根据您进行此设置的方式,您可能正在使用foreach( $array as $key => $value)
单步执行并根据需要运行尽可能多的选择以获得单独的返回。许多问题是在SQL语句中使用的PHP函数。
或者做杰森说的话!纯SQL总是更好,但我认为你出于某种原因需要或想要使用PHP,有时需要在PHP中访问数据的重要原因。