簡體   English   中英

MySQL PHP-按日/月/年分組結果?

[英]MySQL PHP - group results by day/month/year?

我有一個表(Logs),其中保存服務器上發生的事情的日志,我想創建一個函數對我得到的結果進行排序。為了更好地解釋:

我的查詢是。

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

(cur_timestamp是我的日志表中的一個字段,即記錄插入的時間戳)
($ user是用戶名(先前設置))

照常返回所有記錄的降序數組。 現在,我要做的就是查詢數據庫,並使其僅返回某天或某個月之內的記錄,等等,例如,如果用戶選擇一個月,我希望它僅返回所有記錄。那個月。

我一直在嘗試研究該怎么做,似乎一切都指向我使用GROUP BY技術的方法,只不過這只會返回一個結果。 我不確定。 任何幫助,將不勝感激! 謝謝!

示例(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

如果我正確理解了您的問題,我認為您不需要使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM