工作总结-sql查询当天,本周,本月数据

获取一周,一月,一年的数据

一开始只想着使用between来实现,最后发现可以直接使用sql语句实现.

今天

select * from 表名 where to_days(时间字段名) = to_days(now());

本周

SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now());

本月

SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );

本季度

select * from 表名 where QUARTER(时间字段名)=QUARTER(now());

本年

select * from 表名 where YEAR(时间字段名)=YEAR(NOW());

注意

获取一周的数据是从上周日到这周六的数据,考虑到想从周一开始算,所有想查询到本周一的日期然后再查询数据库,

获取本周一,下周一,上周一的日期

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class DateTest {
	//获取上周一
	public static Date geLastWeekMonday(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(getThisWeekMonday(date));
		cal.add(Calendar.DATE, -7);
		return cal.getTime();
	}
 	//获取本周一
	public static Date getThisWeekMonday(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		// 获得当前日期是一个星期的第几天
		int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
		if (1 == dayWeek) {
			cal.add(Calendar.DAY_OF_MONTH, -1);
		}
		// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		// 获得当前日期是一个星期的第几天
		int day = cal.get(Calendar.DAY_OF_WEEK);
		// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
		cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
		return cal.getTime();
	}
 	//获取下周一
	public static Date getNextWeekMonday(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(getThisWeekMonday(date));
		cal.add(Calendar.DATE, 7);
		return cal.getTime();
	}
 	//测试
	public static void main(String[] args) {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			System.out.println("今天是" + sdf.format(date));
			System.out.println("上周一" + sdf.format(geLastWeekMonday(date)));
			System.out.println("本周一" + sdf.format(getThisWeekMonday(date)));
			System.out.println("下周一" + sdf.format(getNextWeekMonday(date)));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

你可能感兴趣的:(工作中的总结,mysql,sql)