2012-08-07 104 views
0

排序數據在MySQL數據庫我有表說bug_list休眠:通過日期和時間

表名:bug_list

ID 專案編號 CREATED_DATE
2012-06-30 13:30 :57
2012-07-30十點30分58秒
2012-07-30 12點30分44秒
2012-07-31十三時30分十四秒
2012-07-31十四時30分32秒

,我想每月對它進行排序(如一月,二月..在第一個結果。)通過每週
&排序它(如星期一,二,文)在第二結果
由小時排序它(如2小時範圍說8-10am,在第三結果

10-12pm ....)

我不能從標準查詢理解有人可以解釋如何解決這個問題..

回答

1

HERE你可以找到一些有用的東西。

開始通過延長休眠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)); 
1
  1. 「我想按月(如一月,二月...)在第一個結果排序爲」

    ORDER BY MONTH(created_date) 
    
  2. 「由每週對其進行排序(如星期一,二,文)在第二個結果「

    ORDER BY WEEKDAY(created_date) 
    
  3. 由小時排序它(如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 
    
+0

感謝名單Puggan 我會盡力 – 2012-08-07 12:09:25

+0

有序的方式得到,但如果我需要計算的價值那些 – 2012-08-07 13:11:45

+0

只是用'GROUP BY'來代表'ORDER BY' – 2012-08-07 13:23:05