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'

日期加一天


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

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

  • 12
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值