结合具体的应用,有一张log表记录了网站的访问记录,time字段为timestamp类型,请筛选出每一天12点之前的访问数据
这个问题有点长也有点绕,比如时间为‘2017-09-01 21:27:49’获得一个这一天的中午12点。
结合具体的应用,有一张log表记录了网站的访问记录,time字段为timestamp类型,请筛选出每一天12点之前的访问数据。
这个查询语句改怎么写?
我们先抛开12点之前的这个条件,那么就是筛选每天的数据,查询语句如下。
select date('time') as date,count(*) as uv
from log_view where 1=1 group by date order by date
这个语句相当简单,那么我们把“12点之前的”这个条件加上来看这个问题,这个问题就变成了如何才能把每天12点之前的数据找出来,方法就是涉及标题中的问题。
这个时间短就是00到12点之间的数据,因为是sql动态查询,不能直接用字符串拼接时间。
//动态获得每日12的时间数据:
$time12 = " unix_timestamp(date(time)) + 12*3600 ";
$time00 = " unix_timestamp(date(time)) ";
//sql查询
select date('time') as date, count(*) as uv
from log_view where
case when date(time) < time;
and unix_timestamp(time) < unix_timestamp(date(time)) + 12*3600
then true else false end
group by date order by date
按照前天介绍mysql date_add函数,可以这么动态获取:
//sql查询
select date('time') as date, count(*) as uv
from log_view where
case when date(time) < time;
and time < date_add(date(time), interval 12 hour)
then true else false end
group by date order by date
还是这种时间处理方式看着比较舒服。
以上就是这个问题的探讨,你可能还有更简洁的写法,欢迎在下方留言。
除特别注明外,本站所有文章均为作者原创。 或分享自己的编程经验,或探讨工作中的问题,或聊以人生趣事。 转载请注明出处来自 https://www.qiusuoweb.com/84.html
运营天数
总访问量
文章数量
-
-
-
交流群:157451741
新浪微博:草莽兴
发布评论