Grails / Hibernate标准中的周(日期)函数

时间:2011-05-02 08:17:59

标签: hibernate grails

我想问一下,是否可以从域的日期属性中获取号码 Grails或hibernate Criteria

例如在 mysql 中,它是WEEK(CURRENT_TIMESTAMP)

提前致谢

2 个答案:

答案 0 :(得分:0)

你必须获取日期属性,转换属性并提取一年中的一周。 e.g。

// fetch property from db
def test= Test.get(1)
// convert date and get week of year
println test.date.toCalendar().get(Calendar.WEEK_OF_YEAR)

答案 1 :(得分:0)

有可能,您可以使用Hibernate的week()函数来执行此操作,前提是您的数据库支持。

例如,下面对实体进行分组(假设每周都有一个名称为dateEntered的日期字段,并为列表中的每个List<Object[]>生成一个Object[],第一个元素是计数,第二个元素是周数。

criteria.setProjection(Projections.projectionList()
                    .add(Projections.rowCount(), "parameterType")
                    .add(Projections.sqlGroupProjection(
                    "week({alias}.dateEntered) as week",
                    "week({alias}.dateEntered)",
                    new String[] {"week"},
                    new Type[] {Hibernate.INTEGER)))
                    .addOrder(Order.desc("parameterType"));