You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在nativeQuery中使用函数?MySQL日期格式化查询报错排查

解决MySQL原生查询中DATE_FORMAT函数的语法错误

我编写了一条原生SQL查询语句,期望返回特定格式的日期,代码如下:

@Query(value = "SELECT function('date_format', c.valid_to, '%Y-%m-%d') " +
        "FROM card c WHERE c.card_id= :card_id", nativeQuery = true)

执行时出现语法错误:

您的SQL语法有误;请查阅与您的MySQL服务器版本对应的手册,以获取在'function('date_format', c.valid_to, '%Y-%m-%d') FROM card c WHERE c.card_id= 3'附近使用的正确语法

不含函数的查询可以正常运行。


问题原因与解决方案

问题核心是**function()是JPAQL的语法,并非原生MySQL SQL的语法**。因为你设置了nativeQuery = true,SQL会直接发送给MySQL执行,必须严格遵循MySQL的函数调用规范,直接去掉function()包裹即可:

@Query(value = "SELECT DATE_FORMAT(c.valid_to, '%Y-%m-%d') " +
        "FROM card c WHERE c.card_id= :card_id", nativeQuery = true)

补充说明

  • 当使用JPA默认的JPQL查询(nativeQuery = false)时,才需要用function('date_format', ...)这种方式,让JPA将其转换为对应数据库的原生函数调用
  • 开启nativeQuery = true后,所有SQL语法必须匹配目标数据库的规范,直接使用数据库原生函数即可

内容的提问来源于stack exchange,提问作者SealAnia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:03:33