【发布时间】:2012-11-11 14:35:12
【问题描述】:
我的 codeigniter 应用中有以下功能
function set_day_peak($days, $offset, $network_id){
$days = $days + $offset;
$query = $this->db->query("SELECT MAX(total_online)AS total FROM network_traffic
WHERE network_id = '$network_id' AND timestamp >= NOW() - INTERVAL $days DAY
AND timestamp <= NOW() - INTERVAL $offset DAY");
$data = $query->row();
return $data->total;
}
上面的函数确实返回一个值,但它不准确,我调用时需要什么
$this->set_day_peak(1,7,14)
是让它返回第 1 天 00:01 到 23:59 的 max(total_online),偏移 7 天或(8 天前)。
由于我对 sql 并不擅长,但我能管理的唯一解决方案是使用 php 设置时间戳,即 ($day_start and $day_end) 然后使用 SELECT MAX BETWEEN 但我想看看它是否可以使用纯 SQL Any想法将不胜感激。
【问题讨论】:
-
为什么没有在感兴趣的一天的第一分钟和最后一分钟发生事件?
-
什么是“第 1 天,偏移 7 天”?你的意思是第 0 天 = 星期日,第 1 天 = 星期一,...;那么您想要 7 天或更早之前的星期一的数据吗?
-
第一分钟和最后一分钟很重要,我的错误。第 1 天偏移 7 天表示 8 天前,第 6 天偏移 7 天表示 13 天前