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

Node.js中MySQL XDev API的DATE_ADD()函数无法使用问题求助

问题原因

MySQL XDevAPI的表达式解析器和原生MySQL的SQL语法并非完全一致,你写的DATE_ADD(NOW(), interval 2 DAY)不符合XDevAPI的解析规则——它无法识别未加引号的数字作为interval参数的写法,所以抛出了解析错误。

解决方法

这里提供三种可行的解决方式:

1. 调整DATE_ADD的参数格式

把interval部分的数值用单引号包裹,适配XDevAPI的解析要求:

var meetingRows = (await sqldb.getTable('meeting')
  .select()
  .where('startTime > DATE_ADD(NOW(), INTERVAL \'2\' DAY)')
  .execute()).fetchAll()

2. 直接执行原生SQL语句

如果更习惯原生SQL的写法,可以用XDevAPI的sql()方法直接执行完整SQL,绕过表达式解析器:

var meetingRows = (await sqldb.sql('select * from meeting where startTime > date_add(now(), interval 2 day)')
  .execute()).fetchAll()

3. 使用参数绑定(推荐)

这种方式既能避免语法问题,还能防范SQL注入风险:

var meetingRows = (await sqldb.getTable('meeting')
  .select()
  .where('startTime > DATE_ADD(NOW(), INTERVAL ? DAY)', 2)
  .execute()).fetchAll()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:49:54