0

我有一个表(日志),我在其中保存了我的服务器上发生的事情的日志,我想创建一个函数来对我得到的结果进行排序。为了更好地解释:

我的查询是。

SELECT * 
  FROM Logs 
  WHERE username = '$user' 
  ORDER BY cur_timestamp DESC

(cur_timestamp 是我的日志表中的一个字段,记录插入的时间戳)
($user 是用户名(之前设置的))

这将像往常一样按降序返回所有记录的数组。现在我想做的是查询数据库并让它只返回某一天或某月内的记录等,例如,如果用户选择一个月,我希望它只返回所有记录那个月。

我一直在尝试研究该做什么,并且事情似乎指向我使用该GROUP BY技术,但这只返回一个结果。我不确定。任何帮助,将不胜感激!谢谢!

4

2 回答 2

3

示例(2012 年 1 月的日志):

SELECT * 
FROM Logs 
WHERE username = '$user' 
and cur_timestamp between '2012-01-01' and '2012-01-31'
ORDER BY cur_timestamp DESC

只有今天:

SELECT * 
FROM Logs 
WHERE username = '$user' 
and date(cur_timestamp) = curdate()
ORDER BY cur_timestamp DESC

如果您想从过去到现在的特定时间,您可以使用DATEADD

示例(过去 30 天的日志):

SELECT * 
FROM Logs 
WHERE username = '$user' 
and date(cur_timestamp) >= DATE_ADD(curdate(), INTERVAL -30 DAY)
ORDER BY cur_timestamp DESC
于 2012-05-08T09:38:45.610 回答
0

如果我正确理解您的问题,我认为您不需要 GROUP BY,而只是添加一个 WHERE 以选择特定时间范围内的所有日志

SELECT * 
FROM Logs 
WHERE username = '$user'
AND cur_timestamp > '2010-01-01'
AND cur_timestamp < '2012-12-01'
ORDER BY cur_timestamp DESC

您唯一需要做的就是调整日期范围。不需要任何 GROUP BY

于 2012-05-08T09:45:16.797 回答