public string GetSortMonth(ClientPeer client)
{
// 获得月初时间戳
long mothStartTs = (long)(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) - dateTime1970).TotalSeconds;
//获得下一个月初时间戳
long mothEndTs = (long)(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(1) - dateTime1970).TotalSeconds;
return selectSortStr(client, "2333", mothStartTs.ToString(), mothEndTs.ToString());
}
public string GetSortWeek(ClientPeer client)
{
// 距离周一
int disMondays = -(int)DateTime.Now.DayOfWeek + 1; // 周天0 周一 1 周二2
if (DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
disMondays = -6;
int disNextMondys = disMondays + 7;
long weekStartTs = (long)(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).AddDays(disMondays) - dateTime1970).TotalSeconds;
long weekEndTs = (long)(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).AddDays(disNextMondys) - dateTime1970).TotalSeconds;
return selectSortStr(client, "2333", weekStartTs.ToString(), weekEndTs.ToString());
}
public string GetSortDay(ClientPeer client)
{
long dayStartTs = (long)(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day) - dateTime1970).TotalSeconds;
long dayEndTs = (long)(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).AddDays(1) - dateTime1970).TotalSeconds;
return selectSortStr(client, "2333", dayStartTs.ToString(), dayEndTs.ToString());
}
string selectSortStr(ClientPeer client, string type, string timestampMin, string timestampMax)
{
string sqlData = string.Format("" +
"select username,sum(number) from diamond_log " + // 从这个表里读出这些数据
"where w_time between {0} and {1} " + // 数据限制范围
"group by username having sum(number)" + // 按照xx分组
"order by sum(number) desc " + // 按照xx顺序排序
"limit 50", timestampMin, timestampMax); // 限制为50个
MySqlCommand mySqlCommand = new MySqlCommand(sqlData, client.MySqlConn);
MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
Dictionary<string, string> usernameSumDict = new Dictionary<string, string>();
string selectStr = "";
string username = "";
while (mySqlDataReader.Read())
{
username = mySqlDataReader.GetString("username");
usernameSumDict.Add(username, mySqlDataReader.GetString("sum(number)"));
}
mySqlDataReader.Close();
if (username != "") // 防止没有读到数据
{
foreach (KeyValuePair<string, string> keyValuePair in usernameSumDict)
{
FindUserInfo(client, keyValuePair.Key, true, out int uid, out string nickName, out int headId);
selectStr += nickName + "," + keyValuePair.Value + "," + headId + "|";
}
if (!string.IsNullOrEmpty(selectStr))
{
selectStr = selectStr.Remove(selectStr.Length - 1);
}
}
return selectStr;
}
总体的思路就是查找这两个时间戳之间的数据,没在这个范围内就不获取