使用QueryDSL或Spring Data JPA将CAST varchar数据类型更改为datetime类型

时间:2018-02-25 20:45:29

标签: datetime casting spring-data-jpa querydsl varchar

我有一个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()))

1 个答案:

答案 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的日期格式参数将取决于日期字符串的格式。