【问题标题】:CAST varchar data type to datetime type using QueryDSL or Spring Data JPA使用 QueryDSL 或 Spring Data JPA 将 varchar 数据类型转换为日期时间类型
【发布时间】:2018-08-05 07:20:15
【问题描述】:

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

下面我可以用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()))

【问题讨论】:

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

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


【解决方案1】:

您可以使用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 的日期格式参数将取决于日期字符串的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多