使用 jOOQ 查找即将到来的生日

2023-12-10

我正在尝试将查找即将到来的生日的现有查询转换为使用 jOOQ。我原来的查询 - 使用 MySQL,并且有点简化 - 是

SELECT COUNT(*) 
FROM people 
WHERE
    DATE_ADD(people_dob, INTERVAL YEAR(CURDATE()) - YEAR(people_dob) YEAR) 
    BETWEEN CURDATE() and DATE_ADD( CURDATE(), INTERVAL 7 DAY)

我尝试用jOOQ表达它但失败了。我已经接近

context
    .selectCount()
    .from(PEOPLE)
    .where(
        PEOPLE_DOB.add(year(currentTimestamp()).minus(year(PEOPLE_DOB)))
        .between(currentTimestamp()).and(currentTimestamp().add(7)));

不幸的是,这转化为

select count(*) 
from `people` 
where 
    date_add(`people`.`people_dob`, interval (extract(year from current_timestamp()) - extract(year from `people`.`people_dob`)) day) 
    between current_timestamp() and date_add(current_timestamp(), interval 7 day)

这里破坏查询的是expr_unit[DATE_ADD][date_add] 的参数,这是我原来的查询是YEAR,但是在jOOQ渲染的那个中是DAY.

我怎样才能将这个查询翻译成jOOQ?我不太关心当前的格式,我只想了解如何获得相同的结果。


jOOQ's Field.add()该方法的灵感来自于 Oracle 的解释

DATE + NUMBER

... 在哪里NUMBER (if an Integer or Double) 是天数。你想要的相当于添加一个SQL标准INTERVAL YEAR TO MONTH到给定日期。这可以通过使用来实现jOOQ's YearToMonth区间型,如果您想添加一个恒定的间隔。这YearToMonth类型也扩展了java.lang.Number,因此也可以与Field.add(),直观地。

虽然有可能生成这样一个Field<YearToMonth>通过现有的 jOOQ 3.2 API,我相信您最好只诉诸纯 SQL,可能通过创建一个可重用的方法:

public static <T extends java.util.Date> 
Field<T> dateInCurrentYear(Field<T> field) {
    return DSL.field("DATE_ADD({0}, INTERVAL YEAR(CURDATE()) - YEAR({0}) YEAR)",
                     field.getDataType(),
                     field);
}

这可能是一个有用的功能补充#2727还有...

不幸的是,各种 SQL 方言对日期时间算术的解释很难标准化。我们不断改进那里的东西,但通常,纯 SQL 是编写特定于方言的日期时间算术表达式的最佳方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jOOQ 查找即将到来的生日 的相关文章

  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • 禁用父元素的 onclick 事件

    假设我有一个带有 onclick 事件的元素 其中还有另一个元素 如何禁用子元素的 onclick Example h3 h3
  • 屏蔽电话号码的文本框视图

    我正在尝试格式化一个文本框 以便当用户可以输入电话号码时 它会自动将其设置为以下格式 999 999 9999 我尝试使用 MaskedEditExtender 它可以工作 但它的作用与我需要的完全相反 当我单击该字段时 它显示正确的格式
  • 来自 ES6 类的原型继承[重复]

    这个问题在这里已经有答案了 我有一个旧的代码库 其中充满了某个外部类的子类 使用原型继承 最近 这个外部类已被移植到 ES6 类 但也有我想使用的新功能 原型继承不再起作用 我想知道是否有可能让它起作用 即使它有一些丑陋的黑客 这基本上就是
  • Google 地图 - Android 应用程序未加载 - 空对象引用

    我目前正在尝试开发一个与谷歌地图集成的Android应用程序 目前我很难找到错误 因为代码来自谷歌网站本身 只不过它是一个SupportMapFragment 如果您知道 SupportMapFragment 的实际教程也会很棒 实际 因为
  • mysqli_begin_transaction()和mysqli_autocommit有什么区别

    Does mysqli begin transaction 实现相同的功能mysqli autocommit mysqli autocommit 永久设置自动提交模式 这意味着如果你将其设置为0 然后提交事务 模式将保持为0 mysqli
  • 如何在android中读取特定联系人的收件箱短信?

    我正在尝试读取来自内容提供商的短信 我有以下代码 Uri uri Uri parse SMS URI INBOX String whereClause address String whereArgs address String proj
  • JavaFX EXCEPTION_ACCESS_VIOLATION

    我对 JavaFX 桌面应用程序有疑问 特别是 3D 渲染功能 每次我尝试构建和启动 JavaFX 应用程序时 JVM 都会崩溃 并且会收到类似于以下错误的错误 A fatal error has been detected by the
  • 找不到要加载的 DSO:libhermes-executor-release.so

    log Time Tag Message 15 56 52 131 SoLoader couldn t find DSO to load libjscexecutor so 15 56 54 275 SoLoader couldn t fi
  • 如何在powershell中向异步作业添加回调函数并获取返回数据

    我一直在互联网上搜索并组合了许多不同的代码片段 但我只是没有成功地为我的异步作业创建回调 我的想法是 我想运行多个作业 并且使用回调方法 我将能够解析不同作业的输出 以更改主脚本中的某些状态和输出 目前我有这个 虽然事件被调用 但我无法获得
  • 找不到 JSP 文件可能是 spring 中的一个错误吗

    我在我的应用程序中遵循了 Spring Boot 的官方文件和包结构 但我仍然收到白标签页面错误 大多数答案和建议都不能解决这个问题 这可能是 Spring Boot 中的一个错误吗 下面是我放置代码的方式以及文件和文件夹的排列结构 应用程
  • 自定义视图,不需要 xml 中的layout_width

    Android SDK有TableLayout容器
  • 仅在使用 iTextSharp 进行生产时出现“文档未打开”错误

    我在 iTextSharp 中收到 文档未打开 错误 但仅限于生产环境 该代码在我的开发机器和暂存中运行良好 我在阶段服务器上的 Temp 文件夹中设置了相同的权限 public static byte ConvertHtmlToPdf s
  • 使用 Java 在多个文本文件中查找并替换一个单词?

    如何使用 Java 在多个文本文件中查找并替换单词 这是我为单个人做的方法String public class ReplaceAll public static void main String args String str We wa
  • Android 导航架构组件 - 获取当前可见片段

    在尝试导航组件之前 我曾经手动执行片段事务并使用片段标签来获取当前片段 val fragment MyFragment supportFragmentManager findFragmentByTag tag MyFragment 现在在我
  • 使用 NHibernate 测试连接参数

    我们有一个程序 用户可以在其中指定他们的数据库连接参数 通常的嫌疑人包括主机 端口 用户名 密码和表名 我们使用 NHibernate 连接到数据库 我们想要做的是能够使用 NHibernate 构建配置 然后在继续其他操作之前测试连接参数
  • Dagger2 和依赖组件中的限定符

    我有一个应用程序组件和一个依赖组件 应用程序组件声明显式依赖项 依赖组件可以注入这些依赖项 但是 当我有一个必须使用 Qualifier 消除歧义的依赖项时 依赖组件无法注入该依赖项 这是应用程序组件 Component modules A
  • java 在子类构造函数中初始化基类字段

    这是一个关于java子类的非常基本的问题 我还是不明白 假设我有一个包含三个字段且仅包含默认构造函数的超类 public class Superclass public int a public int b public int c 我想添
  • get_map 发生了什么?

    我今天开始使用 get map 向 googlemaps 发出大约 230 个地图请求 然后出现错误 丢失了原始错误 我的第一个假设是我使用它超出了 api 的限制 但我尝试使用开放街道地图 api 作为源 我收到的错误消息仍然看起来像 g
  • 使用 Vbscript 将记录批量插入到 Access 中

    我真的对这个感到抓狂 我有一个 vbscript 我正在尝试将几十万条记录插入到 Access 数据库中 显然 如果我一次只执行一个操作 速度会很慢 所以我想我可以通过某种事务批量插入它们 所以我尝试写这个 set rs CreateObj
  • 使用 jOOQ 查找即将到来的生日

    我正在尝试将查找即将到来的生日的现有查询转换为使用 jOOQ 我原来的查询 使用 MySQL 并且有点简化 是 SELECT COUNT FROM people WHERE DATE ADD people dob INTERVAL YEAR