mysql 动态插入日期_mysql 如何动态传入一个时间得到此时间的某个时间点

fe13a1b581b7464f6ceca50422cb8aa1.png

这个问题有点长也有点绕,比如时间为‘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

还是这种时间处理方式看着比较舒服。

以上就是这个问题的探讨,你可能还有更简洁的写法,欢迎在下方留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值