注意:请一定要看到最后!
查询本月数据:
SELECT
*
FROM
表名称
WHERE
DATE_FORMAT(字段名, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')
AND 条件1
AND 条件2
查询本月例子:
SELECT
*
FROM
fire_alarm_event
WHERE
DATE_FORMAT(alarm_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')
AND is_deleted = 0
AND event_type = 1
查询当日数据
SELECT
*
FROM
表名称
WHERE
to_days(字段名称) = to_days(now())
AND 条件1;
查询当日数据例子
SELECT
count(*)
FROM
fire_alarm_event
WHERE
to_days(alarm_time) = to_days(now())
AND is_deleted = 0;
查询某个月的数据
SELECT * FROM daq_alarm_device WHERE YEAR(alarm_time)='2022' AND MONTH(alarm_time)='11'
日期加一天
/*sql日期加一天*/
UPDATE your_table
SET date_field = DATE_ADD(date_field, INTERVAL 1 DAY)
WHERE condition;
查询近30天每天最新的 一条数据
SELECT
aa.*
FROM
(
SELECT CONVERT
(
send_time,
CHAR ( 10 )) datetemp,
a.send_time
FROM
ecoi_hydrology a
WHERE
DATEDIFF( str_to_date( NOW(), '%Y-%m-%d %H' ), a.send_time )<= 30
) aa
GROUP BY
aa.datetemp
在程序中不建议用上述函数,原因如下:
函数的使用会使sql不走索引,从而是性能下降,数据量大的时候,响应时间过长
建议使用where替代:
SELECT
*
FROM
table
WHERE
create_time > #{beginOfDay}
and
create_time < #{endOfDay}
例子
//查询当天数据
SELECT
*
FROM
table
WHERE
create_time > #{一天开始时间}
and
create_time < #{一天结束时间}
//查询当月数据
SELECT
*
FROM
table
WHERE
create_time > #{当月开始时间}
and
create_time < #{当月结束时间}
java中获取一天的开始时间和结束时间
首先得导入hutool的核心包依赖, 因为获取开始和结束时间用的hutool中的DateUtil工具类。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.7.6</version>
</dependency>
获取当天的开始时间
DateTime beginOfDay = DateUtil.beginOfDay(new Date());
获取当天的结束时间
DateTime endOfDay = DateUtil.endOfDay(new Date());
在这里获取昨天的开始和结束时间需要结合Calendar和hutool一起使用
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//例如今天是 2021-07-29 16:55:45
//获取昨天开始的时间
Date beginOfDay = DateUtil.beginOfDay(new Date());
Calendar c = Calendar.getInstance();
c.setTime(beginOfDay);
c.add(Calendar.DAY_OF_MONTH,-1);
Date yesterBeginDay = c.getTime();
String a = simpleDateFormat.format(yesterBeginDay);
System.out.println(a);
输出结果:2021-07-28 00:00:00
//获取昨天结束的时间
Date endOfDay = DateUtil.endOfDay(new Date());
c.setTime(endOfDay);
c.add(Calendar.DAY_OF_MONTH,-1);
Date yesterEndDay = c.getTime();
String b = simpleDateFormat.format(yesterEndDay);
System.out.println(b);
输出结果:2021-07-28 23:59:59
java8获取当天开始结束日期
LocalDateTime time = LocalDateTime.now().minusHours(1);
LocalDate now =time.toLocalDate();
beginTime = LocalDateTime.of(now, LocalTime.MIN);
endTime = LocalDateTime.of(now, LocalTime.MAX);