代码之家  ›  专栏  ›  技术社区  ›  jdmichal

在HQL中执行日期/时间数学?

  •  16
  • jdmichal  · 技术社区  · 16 年前

    current_timestamp()

    FROM RandomThing
    WHERE randomTime IS NOT NULL AND
          randomTime >= current_timestamp() AND
          randomTime <= (current_timestamp() + :timeToAdd)
    

    4 回复  |  直到 16 年前
        1
  •  10
  •   ccclark    16 年前

    From RandomThing
    Where randomTime is not null and
          randomTime >= :currentTimestamp and
          randomTime <= :maxTimestamp
    

        2
  •  4
  •   Brian Deterling    14 年前

    registerFunction("weekday", 
      new SQLFunctionTemplate(Hibernate.INTEGER, "to_char(?1,'D')") );
    

        3
  •  3
  •   Ridcully    16 年前

    如果你需要数据库服务器的时间,你可以首先执行一个简单的hql查询来获取时间戳,然后在java中计算maxTimestamp,并将获取的时间戳和计算的maxTimestamp传递给类似ccclark的查询。

        4
  •  1
  •   ccclark    16 年前

    它必须是HQL吗?我可能会切换到休眠标准并使用:

    Criteria.add( Restrictions.SQLRestriction( "{alias} <= current_timestamp() " ) )
    Criteria.add( Restrictions.SQLRestriction( "{alias} >= (current_timestamp() + ?) ", 5 )