您的位置:首页 > 数据库 > MySQL

[ mysql ] 根据时间查询有效数据

2017-09-20 10:22 609 查看
查询距离当前时间 分钟expireMin 到 expireMinEnd内数据

时间的参数只需要修改除数即刻 60 表示一分钟60s

SELECT
dis.*
FROM
(SELECT
*,
(
UNIX_TIMESTAMP(gmt_deadline) - UNIX_TIMESTAMP(NOW())
) / 60 AS m
FROM
T_DISPATCH) dis
LEFT JOIN T_RECV_REPORT rec
on dis.src_id = rec.rep_id
WHERE dis.m <![CDATA[ >=  ]]> #{expireMin}
AND dis.m <![CDATA[ <=  ]]> #{expireMinEnd}
AND dis.disp_type=2
AND dis.disp_state=0
AND rec.rep_way=1


查询大于七天的数据并设置为过期状态

时间的参数只需要修改除数即刻 3600*24 表示一天24小时,每小时3600s

UPDATE
T_APOLLO_MSG_CACHE
SET
is_expired = 1
WHERE msg_id IN
(SELECT
msg.msg_id
FROM
(SELECT
*,
(
UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(gmt_update)
) / 3600 / 24 AS d
FROM
T_APOLLO_MSG_CACHE) msg
WHERE msg.is_send = 0
AND msg.recieve_user_token =#{token}
AND msg.d > #{validDay}) ;


查询今日数据

select COUNT(1)
from
T_DISPATCH
WHERE TO_DAYS(gmt_update) = TO_DAYS(NOW());


实际案例

resultMap

public class StatItem {

private String  unit;
private Integer number;

public String getUnit() {
return unit;
}

public StatItem setUnit(String unit) {
this.unit = unit;
return this;
}

public Integer getNumber() {
return number;
}

public StatItem setNumber(Integer number) {
this.number = number;
return this;
}
}
<resultMap id="statItem" type="cn.showclear.utio.web.pojo.vo.StatItem">
<result column="unit" property="unit" jdbcType="VARCHAR"/>
<result column="number" property="number" jdbcType="INTEGER"/>
</resultMap>


查询当前天每小时数据

<!--当天/小时-->
<select id="statDispatchInDayWithDispType" resultMap="statItem">
SELECT
HOUR(dis.gmt_update) AS unit,
COUNT(1) AS number
FROM
T_DISPATCH dis
WHERE TO_DAYS(dis.gmt_update) = TO_DAYS(NOW())
AND dis.disp_type = #{dispType}
GROUP BY HOUR(dis.gmt_update)
ORDER BY HOUR(dis.gmt_update)
</select>


查询当前月每天的数据

<!--当前月/每天-->
<select id="statDispatchInMonthWithDispType" resultMap="statItem">
SELECT
COUNT(1) AS number,
DATE_FORMAT(dis.gmt_update, '%Y-%m-%d') AS unit
FROM
T_DISPATCH dis
WHERE DATE_FORMAT(dis.gmt_update, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')
AND dis.disp_type = #{dispType}
GROUP BY DATE_FORMAT(dis.gmt_update, '%Y-%m-%d')
</select>


查询当前年每个月的数据

<!--当前年/每月-->
<select id="statDispatchInYearWithDispType" resultMap="statItem">
SELECT
COUNT(1) AS number,
DATE_FORMAT(dis.gmt_update, '%Y-%m') AS unit
FROM
T_DISPATCH dis
WHERE DATE_FORMAT(dis.gmt_update, '%Y') = DATE_FORMAT(CURDATE(), '%Y')
AND dis.disp_type = #{dispType}
GROUP BY MONTH(dis.gmt_update)
</select>


参考:

1、mysql查询每天每周每月每年的数据方法

2、mysql 查询今天、昨天、上月、本月的数据

3、mysql查询今天、昨天、7天、近30天、本月、上一月 数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: