sql查询本月数据,当天数据

注意:请一定要看到最后! 

查询本月数据:

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'

查询近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}

 java中获取一天的开始时间和结束时间

首先得导入hutool的核心包依赖, 因为获取开始和结束时间用的hutool中的DateUtil工具类。

   
      cn.hutool
      hutool-core
      5.7.6
    

获取当天的开始时间

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);

如果对您有帮助,随手点赞关注哦,谢谢!

你可能感兴趣的:(sql)