最近在项目中遇到使用hql查询一个月、一周内的数据,于是在网上查了好多资源,除了mysql的DATE_SUB函数之外,就是对hql的模糊描述,没有查到具体的实现。于是自己采用java的日历对象Calendar实现了需求,尽管方法稍微绕弯,但总算实现了。
代码如下:
//创建Date对象
Date endDate = new Date();
//创建基于当前时间的日历对象
Calendar cl = Calendar.getInstance();
cl.setTime(endDate);
//距离今天,一个月内数据
if(flag.equals("month")){
cl.add(Calendar.MONTH, -1);
}
//距离今天,一周内的数据
if(flag.equals("week")){
cl.add(Calendar.DATE, -7);
}
Date startDate = cl.getTime();
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");
//格式化开始日期和结束日期
String start = dd.format(startDate);
String end = dd.format(endDate);
//如果(flag!=month) && (flag!=week), 则查询的就是当天的数据
String hql = "from tableName where columnName >= '" + start +"' and columnName <= '"+end+"';
联系客服