2013-02-19 59 views
-2

我“user`表看起来喜欢下面的时间问题..如何解决在where子句

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().")"; 

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

请帮我解决问题

+0

显示php代码。 – 2013-02-19 18:51:49

+2

'strtotime()'是PHP函数 - 不是MySQL ... – alfasin 2013-02-19 18:52:48

+0

它引发了语法错误,因为'strtotime'是一个PHP函数。 – luchosrock 2013-02-19 18:53:22

回答

5

不需要PHP。您可以使用MySQL Date and Time functions

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

注:这查询不优化的日期函数阻止查询被缓存。如果这是一个大问题,那么使用PHP等价物可能会更高效。

0

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

0

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

或者做杰森说的话!纯SQL总是比较好,但是由于某种原因,我认为您需要或希望使用PHP,但有时需要访问PHP中的数据才是重要的原因。