hibernate QueryDSL -仅比较日期与dateTime

f87krz0w  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(231)

有没有办法只比较dateTime字段的日期部分?我知道我可以用between来表示一天的开始和结束,但这并不好。也不能比较每个字段(日、月、年...);
有什么建议吗?

rxztt3cl

rxztt3cl1#

您可以使用datetrunc方法(doc在此)。

htrmnn0y

htrmnn0y2#

看一下com.querydsl.core.types.dsl.Expressions类,在本例中,可以使用Expressions::dateTimeOperationOps.DateTimeOps.DATE来截断时间部分:

import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.Ops;
import com.querydsl.core.types.dsl.*;

...

public Iterable<Entity> getList(Date createdOn) {

    BooleanBuilder builder = new BooleanBuilder();
    BooleanExpression compareDatePart = Expressions.dateTimeOperation(
                Date.class, Ops.DateTimeOps.DATE,
                QEntity.entity.timestamp).eq(createdOn);
    Predicate predicate = builder.and(compareDatePart).getValue();
 
    return entityRepository.findAll(predicate);
}

...

相关问题