php根据时间段查询每天的数据

leedaning 2015-10-08 05:26:34
现在需要查询给定的日期内的每天的数据,请教各位有没有什么好的办法?
...全文
2706 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
森林之 2016-10-12
  • 打赏
  • 举报
回复
如果存储的是 timestamp 如何查询呢?
leedaning 2015-10-19
  • 打赏
  • 举报
回复
引用 22 楼 xuzuning 的回复:
这没有什么
select 时间戳, sum(数量) from 表 group by floor(时间戳/86400)
哇,还能这样用,受教了,多谢!!!
xuzuning 2015-10-15
  • 打赏
  • 举报
回复
这没有什么
select 时间戳, sum(数量) from 表 group by floor(时间戳/86400)
leedaning 2015-10-15
  • 打赏
  • 举报
回复
引用 19 楼 qq_16461857 的回复:
数据库存时间戳就挺好的 不用改 你查询的条件 可以把给的制定日期变成时间戳再去查库啊
数据库中保存的是时间戳,如果是要以每天为单位查询出一段时间每天的数据就不大方便了吧。 数据库表(时间字段应该是时间戳格式,为了便于显示直接写成date格式): 时间 | 种类 |   数量 2015-10-14 1      20  2015-10-14 2      15  2015-10-14 3      35  2015-10-15 3      35  要如下结果: 时间 | 销售种类总数 2015-10-14 3 2015-10-15 1
leedaning 2015-10-15
  • 打赏
  • 举报
回复
多谢各位的回答,不但解决了我的问题还让我学到了更多的知识,非常感谢!!!
如花alen 2015-10-12
  • 打赏
  • 举报
回复
数据库存时间戳就挺好的 不用改 你查询的条件 可以把给的制定日期变成时间戳再去查库啊
xuzuning 2015-10-11
  • 打赏
  • 举报
回复
$d1 = strtotime('2015-01-01');
$d2 = strtotime('2015-02-01');
$sql = "select * from tbl_name where field between $d1 and $d2"

查询时没有了格式转换,自然效率要高很多
傲雪星枫 2015-10-10
  • 打赏
  • 举报
回复
select *,from_unixtime(addtime, '%Y%m%d') as d from table where from_unixtime(addtime,'%Y%m%d')>=20150101 and from_unixtime(addtime,'%Y%m%d')<=20150201;
xuzuning 2015-10-10
  • 打赏
  • 举报
回复
每种数据库的日期时间函数都是不一样的
如果你有升迁到大型或分布式数据库的打算时,则一定不能使用日期、时间类型字段
使用 unix 时间戳可免除绝大多数日期时间函数的烦恼

leedaning 2015-10-10
  • 打赏
  • 举报
回复
引用 14 楼 jzh2004 的回复:
PHP做数据整合适合小数据量,大数据太耗资源,如果你有100W数据需要占用多少内存多少带宽?一亿呢?
怎么做才能最大程度的减少资源的消耗呢?
沪php攻城师 2015-10-10
  • 打赏
  • 举报
回复
PHP做数据整合适合小数据量,大数据太耗资源,如果你有100W数据需要占用多少内存多少带宽?一亿呢?
leedaning 2015-10-10
  • 打赏
  • 举报
回复
引用 12 楼 leungigi 的回复:
时间戳有时间戳的好处 用php来做数据整合就可以咯.
你好,我也是这样认为的,但是一直不太清楚什么情况用时间戳和日期格式比较合适!
艾派德迷你2 2015-10-10
  • 打赏
  • 举报
回复
时间戳有时间戳的好处 用php来做数据整合就可以咯.
leedaning 2015-10-08
  • 打赏
  • 举报
回复
引用 8 楼 jzh2004 的回复:
[quote=引用 7 楼 leedaning 的回复:] 你好,“插入的时候就计算好日期”指的是在数据库保存数据的时候就保存成如2015-10-08这种格式的日期吗? 我现在获取到的是一个时间段的开始时间和结束时间,是不是要先把这段时间按天保存到一个数组,然后按“每天”执行查询当天的数据的?
是的,插入的时候就保存日期格式。 有开始时间和结束时间的话,查询的时候用大于小于比较符即可。如果数据量较大的话,每天写定时整理好存在一个新表中就快多了。[/quote] 明白了,多谢哈!
leedaning 2015-10-08
  • 打赏
  • 举报
回复
引用 9 楼 q81999008 的回复:

<?php 
///$ary为该时间区间下所有的数据

foreach($ary as $k=>$v)
{	$datas['day_'.date('md',$v['timestamp'])][]=$v;//分组
	
	}

var_dump($datas['day_0809'])//为8月9号那天所有数据;
?>
3g油!
q81999008 2015-10-08
  • 打赏
  • 举报
回复

<?php 
///$ary为该时间区间下所有的数据

foreach($ary as $k=>$v)
{	$datas['day_'.date('md',$v['timestamp'])][]=$v;//分组
	
	}

var_dump($datas['day_0809'])//为8月9号那天所有数据;
?>
沪php攻城师 2015-10-08
  • 打赏
  • 举报
回复
引用 7 楼 leedaning 的回复:
你好,“插入的时候就计算好日期”指的是在数据库保存数据的时候就保存成如2015-10-08这种格式的日期吗? 我现在获取到的是一个时间段的开始时间和结束时间,是不是要先把这段时间按天保存到一个数组,然后按“每天”执行查询当天的数据的?
是的,插入的时候就保存日期格式。 有开始时间和结束时间的话,查询的时候用大于小于比较符即可。如果数据量较大的话,每天写定时整理好存在一个新表中就快多了。
leedaning 2015-10-08
  • 打赏
  • 举报
回复
你好,“插入的时候就计算好日期”指的是在数据库保存数据的时候就保存成如2015-10-08这种格式的日期吗? 我现在获取到的是一个时间段的开始时间和结束时间,是不是要先把这段时间按天保存到一个数组,然后按“每天”执行查询当天的数据的?
果酱很好吃 2015-10-08
  • 打赏
  • 举报
回复
select id,FROM_UNIXTIME(timeField, '%Y%m%d') as time from tableName where FROM_UNIXTIME(timeField, '%Y%m%d')=20150920
沪php攻城师 2015-10-08
  • 打赏
  • 举报
回复
你可以看看MYSQL的日期函数,比如你保存时间戳的字段为t 可以这样统计数据 SELECT COUNT(*) AS n,FROM_UNIXTIME(`t`,'%y-$m-%d') AS d FROM `tb` GROUP BY d ORDER BY d 不过这种效率很低,最好你插入的时候就计算好日期。
加载更多回复(4)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧