1

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 

最初の結果で月 (1 月、2 月など) で
並べ替え、2 番目の結果で曜日 (月、火、水など) で
並べ替え、時間で並べ替えます (2 時間の範囲のように 8-午前 10 時、午後 10 時~午後 12 時....) 3 番目の結果

条件クエリから理解できません。誰かがこの問題を解決する方法を説明できますか?

4

2 に答える 2

2
  1. "i want to sort it by month(like jan, feb... ) in first result"

    ORDER BY MONTH(created_date)
    
  2. "sort it by weekly(like mon, tue, wen) in second result"

    ORDER BY WEEKDAY(created_date)
    
  3. sort it by hour(like 2hrs range say 8-10am, 10-12pm....) in third result

    ORDER BY HOUR(created_date)
    

    or by time spans

    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
    
于 2012-08-07T12:04:52.787 に答える
1

ここで何か役に立つものを見つけることができます。

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));
于 2012-08-07T12:19:11.753 に答える