我们经常遇到类似这样的需求,查询最近N秒、N分钟、N小时的数据及N天的数据,相关的方法和函数很多,本人最近用的MySQL数据库,也就用MySQL为例,大概介绍几种比较通用的方法。
一、查询最近N秒、N分钟、N小时、N天的数据
1. 查询最近N秒的数据
法一(推荐):
# 查询最近300秒的数据
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM alarm_list_info_view t where t.begin_time between date_sub(now(),interval 300 SECOND) and now();
法二:
# 查询最近300秒的数据
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM alarm_list_info_view t where TIMESTAMPDIFF(SECOND, t.begin_time, NOW()) > 0 and TIMESTAMPDIFF(SECOND, t.begin_time, NOW()) < 300;
2. 查询最近N分钟的数据
法一
# 查询最近5分钟的数据
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM yusys_aiops_alarm.alarm_list_info_view t where t.begin_time between date_sub(now(), interval 5 MINUTE) and now();
法二
# 查询最近5分钟的数据 包含当前分钟 <= 5 不包含 <5
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM alarm_list_info_view t where TIMESTAMPDIFF(MINUTE, t.begin_time, NOW()) > 0 and TIMESTAMPDIFF(MINUTE, t.begin_time, NOW()) <= 5;
3. 查询最近N小时的数据
法一
# 查询最近3小时的数据
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM yusys_aiops_alarm.alarm_list_info_view t where t.begin_time between date_sub(now(), interval 3 HOUR) and now();
法二
# 查询最近3小时的数据
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM alarm_list_info_view t where TIMESTAMPDIFF(HOUR, t.begin_time, NOW()) > 0 and TIMESTAMPDIFF(HOUR, t.begin_time, NOW()) <= 3;
4. 查询最近N天的数据
法一
# 查询最近3天的数据
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM yusys_aiops_alarm.alarm_list_info_view t where t.begin_time between date_sub(now(), interval 3 DAY) and now();
法二
# 查询最近3天的数据 包含当前天<= 3 不包含天 <3
SELECT t.alarm_id, t.alarm_status, t.busi_type_name, t.begin_time FROM alarm_list_info_view t where TIMESTAMPDIFF(DAY, t.begin_time, NOW()) > 0 and TIMESTAMPDIFF(DAY, t.begin_time, NOW()) <= 3;
二、介绍下上面SQL中用到的几个函数
1. 计算时间差的函数TIMESTAMPDIFF()
和 DATEDIFF()
的用法
TIMESTAMPDIFF()
和 DATEDIFF()
函数都是计算时间差的,具体的定义用法和区别见如下地址。
需要注意:TIMESTAMPDIFF
函数第一个参数为:时间单位,第二个参数为小的时间参数,第二个参数为大的时间参数。
地址:https://blog.csdn.net/qq_36735986/article/details/120534436
2. DATE_SUB()
函数的定义和用法
MySQL DATE_SUB() 函数定义:
DATE_SUB()
函数从日期减去指定的时间间隔。
语法:
DATE_SUB(date, INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
————————————————
版权声明:本文为CSDN博主「ce_wangyp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36735986/article/details/120534681