使用QueryDSL或Spring数据JPA将varchar数据类型强制转换为datetime类型

使用QueryDSL或Spring数据JPA将varchar数据类型强制转换为datetime类型,datetime,casting,spring-data-jpa,querydsl,varchar,Datetime,Casting,Spring Data Jpa,Querydsl,Varchar,我有一个QueryDSL和Spring数据JPA的设置,我主要尝试使用cast,以便能够将字符串转换为日期进行比较和/或排序 下面我可以用QueryDSL自己提供的castToNum来做,有类似的方法来做约会吗 如果没有。有没有其他方法可以使用QueryDSL、Spring数据JPA或它们的组合来实现这一点 再一次,我的问题和我想要实现的是,将varchar列值强制转换为datetime,以便在查询时进行比较和/或排序。 下面是这样的 where cast(myuser0_.value as d

我有一个QueryDSL和Spring数据JPA的设置,我主要尝试使用cast,以便能够将字符串转换为日期进行比较和/或排序

下面我可以用QueryDSL自己提供的castToNum来做,有类似的方法来做约会吗

如果没有。有没有其他方法可以使用QueryDSL、Spring数据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()))
NumberExpression path=path.castToNum(Integer.class);
返回path.goe(Integer.parseInt(criteria.getValue().toString()))

您可以使用
DateTemplate
定义一个自定义表达式,将字符串值转换为日期进行比较。由于您使用的是MySQL,因此可以使用
STR\u TO\u DATE
转换字符串值

DateExpression<LocalDate> expression =  Expressions.dateTemplate(LocalDate.class, "STR_TO_DATE({0}, "DD/MON/YYYY")", myuser0_.value);

return expression.goe(compareDate);
DateExpression=Expressions.dateTemplate(LocalDate.class,“STR_TO_DATE({0},“DD/MON/YYYY”)”,myuser0.value);
返回表达式.goe(compareDate);

STR_TO_date
的日期格式参数将取决于日期字符串的格式

您使用的是哪个数据库?谢谢您的回复。我正在使用MySQL数据库