查询条件使用now()函数,相同sql代码执行结果与数据库执行结果不一致


使用#{now}这个占位符,对应的值是使用java工具取的服务器当前时间,这样相当于直接把sql中执行的now()函数用代码的字符串日期替代了

检查一下各节点的系统时间。

1 个赞

已检查过,select now()的结果不管是使用mybatis执行还是直接在数据库执行,得到的结果都是对应的

如果把select now()结果赋值给java变量,然后把变量传递给mybatis会什么结果?

这样是可以的,因为这个本质和我贴里说的解决方案是一样的,都是写定了时间然后以字符串的形式入参到mybatis中,这样是可以正确查询到所有结果的。

那只能把这种方式作为一个临时解决方案了。
如果想彻底搞清楚原因的话,可以这么做,可能会比较麻烦。
做一个mysql环境,把数据导过去测试一下,如果有同样的问题,说明是mybatis的bug,可以提交给开发方解决。如果mysql没问题,那应该就是tidb的问题了。

感谢建议,确实可以尝试 :thinking:

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。