我有一个QueryDSL和Spring Data JPA的设置,我主要尝试使用强制转换,以便能够将字符串转换为比较和/或订单的日期
下面我可以使用QueryDSL提供的 castToNum 来实现日期吗?
如果没有。有没有其他方法可以使用QueryDSL,Spring Data JPA或组合?
我的问题和我想要实现的目标是将varchar列值转换为datetime,以便在查询时进行比较和/或订购。
如下所示
where cast(myuser0_.value as datetime)>=?
castToNum示例提供了QueryDSL方法
NumberExpression<Integer> paths = path.castToNum(Integer.class);
return paths.goe(Integer.parseInt(criteria.getValue().toString()))
答案 0 :(得分:0)
您可以使用DateTemplate
定义一个自定义表达式,该表达式会将字符串值转换为日期以进行比较。由于您使用的是MySQL,因此可以使用STR_TO_DATE
转换字符串值。
DateExpression<LocalDate> expression = Expressions.dateTemplate(LocalDate.class, "STR_TO_DATE({0}, "DD/MON/YYYY")", myuser0_.value);
return expression.goe(compareDate);
STR_TO_DATE
的日期格式参数将取决于日期字符串的格式。