2012-09-23 167 views
8

我想从数据库中检索TODAY的数据,但我不知道该怎么做。我实际上想从过去的24小时内获取数据,我只想要今天的数据(所以根据实际的服务器时间)。如何从MySQL数据库获取今天/昨天的数据?

我还想得到昨天的数据。任何人都可以帮助我如何做到这一点?

示例代码:

"SELECT id FROM folk WHERE time = ???" 

预先感谢您!

+3

你是如何存储的“时间”,INT,时间戳,日期时间等? – David

+0

实际上是时间戳。 – user1406071

回答

10

我认为你正在寻找这样的:

"SELECT id FROM folk WHERE DATE(time) = CURDATE()" 

时间必须在你表中的字段保存到该行的引用。

更新

要获取昨天补充:

"SELECT id FROM folk WHERE DATE(time) = CURDATE() - 1" 

更新2

要获得所有附加本月:

"SELECT id FROM folk 
WHERE MONTH(time) = MONTH(NOW()) AND YEAR(time) = YEAR(NOW())" 

[R eference:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

+0

没有人,我实际上正在根据服务器时间从ACTUAL DAY获取数据。就像上午8点一样,所以它应该只显示最近8小时内的数据。 – user1406071

+0

我认为这就是我所提供的。每个记录创建时都需要一个时间戳。 MySQL不保存添加记录的日志。 – JvdBerg

+0

比我怎样才能得到昨天或每月的数据呢? – user1406071

1

当您使用时间戳:

"SELECT id FROM folk WHERE time >= ".mktime(0, 0, 0) 

这将选择自今天起所有数据。

如果你想获得不为今天所有的约会,你会怎么做

"SELECT id FROM folk WHERE time < ".mktime(0, 0, 0) 

选择从昨天的数据,你会怎么做:

"SELECT id FROM folk WHERE time < ".mktime(0, 0, 0)." AND time >= ".mktime(0, 0, 0, date('m'), date('d')-1, date('Y')) 

如果你使用DATETIME,只是供参考,这将是这样的:

"SELECT id FROM folk WHERE time >= '".date('Y-m-d').' 00:00:00."'" 
+0

请注意,字符串连接在SQL查询中被忽略;是的,我知道这只是一个例子 – tucuxi

+0

“选择ID从民俗其他时间”=“.mktime(0,0,0) 它实际上不工作。它给了我所有的数据,而不仅仅是这一天:/ – user1406071

+0

嗯,它应该工作?我测试了时间戳并且它们是准确的,所以我只能假定比较失败或者无法将两者相互匹配。 @tucuxi我知道,但试图保持它简短和甜蜜;-) – David

3
SELECT id FROM folk WHERE DATE(time) = DATE(NOW()); 

SELECT id FROM folk WHERE DATE(time) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY)); 

提供了“时间”有一个适当的日期,时间型

+0

'时间'是一个时间戳,正如OP在他的评论中解释的(可能在你的回答后发布的)。 – Havelock

相关问题