[英]Hibernate: sorting data by date & time
在mysql數據庫中,我有一個名為bug_list
的表
tables name: bug_list
id projectId created_date
1 5 2012-06-30 13:30:57
2 5 2012-07-30 10:30:58
3 5 2012-07-30 12:30:44
4 5 2012-07-31 13:30:14
5 5 2012-07-31 14:30:32
我想在第一個結果中按月(如jan,feb ......)對其進行排序,
在第二個結果中按星期幾(如周一,周二,周三)排序
並在第三個結果中按小時(如2小時范圍,比如8-10am,10-12pm ......)對其進行排序
我從標准查詢中無法理解。 有人可以解釋如何解決這個問題嗎?
“我想在第一個結果中按月分類(如jan,feb ......)”
ORDER BY MONTH(created_date)
“在第二個結果中每周排序(如周一,周二,周)”
ORDER BY WEEKDAY(created_date)
在第三個結果中按小時排序(如2小時范圍,比如8-10am,10-12pm ......)
ORDER BY HOUR(created_date)
或者按時間跨度
ORDER BY CASE WHEN HOUR(created_date) BETWEEN 8 AND 9 THEN 1 WHEN HOUR(created_date) BETWEEN 10 AND 12 THEN 2 WHEN HOUR(created_date) BETWEEN 13 AND 17 THEN 3 ELSE 4 END
在這里你可以找到有用的東西。
首先擴展Hibernate Order類:
public class CustomizedOrderBy extends Order {
private String sqlExpression;
protected CustomizedOrderBy(String sqlExpression) {
super(sqlExpression, true);
this.sqlExpression = sqlExpression;
}
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
return sqlExpression;
}
public static Order sqlFormula(String sqlFormula) {
return new CustomizedOrderBy(sqlFormula);
}
public String toString() {
return sqlExpression;
}
}
然后使用一些SQL公式:
criteria.addOrder(CustomizedOrderBy.sqlFormula("MONTH("+sortBy.getInnerName()+")"+ asc));
criteria.addOrder(CustomizedOrderBy.sqlFormula("WEEKDAY("+sortBy.getInnerName()+")"+ asc));
criteria.addOrder(CustomizedOrderBy.sqlFormula("HOUR("+sortBy.getInnerName()+")"+ asc));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.