【问题标题】:Not converting yearweek function with QueryDSL不使用 QueryDSL 转换 yearweek 函数
【发布时间】:2018-11-13 13:12:32
【问题描述】:

我想使用QueryDSL支持的yearweek()功能。此函数生成查询select year(table1.timestamp)*100 + week(table1.timestamp) as col_0_0_ [...]。但是,这不会在年末返回正确的结果。我已经为此问题打开了bug report

我宁愿使用内置的 SQL yearweek() 函数,例如直接支持该函数。玛丽亚数据库。有没有办法将 SQL 函数 YEARWEEK(timestamp) 与 QueryDSL 一起使用?或者是否可以使用带有 QueryDSL 的自定义 SQL 函数,例如以字符串形式给出?


以下是两个实现如何在年终返回不同结果的示例:

SELECT YEARWEEK("2018-01-01");
→ returns 201753, correct

SELECT YEAR("2018-01-01") * 100 + WEEK("2018-01-01")
→ returns 201800, incorrect

【问题讨论】:

    标签: hql jpql querydsl week-number


    【解决方案1】:

    我在StackOverflow answer 中找到了问题的答案。你可以使用模板来解决这个问题。

    我使用以下模板通过 SQL yearweek 函数创建了一个数字表达式:

    Expressions.numberTemplate(Integer.class, "yearweek({0}, 3)", table1.timestamp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2012-10-23
      相关资源
      最近更新 更多