NutzCN Logo
问答 nutz自定义sql问题
发布于 2985天前 作者 fanyajun186 2695 次浏览 复制 上一个帖子 下一个帖子
标签:
Sql sql = Sqls.create("SELECT count(*) as count,$flag  FROM alarm_merge WHERE ((start_time >= @startTime and start_time <=@endTime) or (end_time >= @startTime and end_time <=@endTime) or (start_time <= @startTime and end_time >=@endTime)) group by $flag order by count desc limit 10");
		sql.params().set("startTime", startTime).set("endTime", endTime);
		sql.vars().set("flag", flag);

是不是加了括号,导致nutz底层识别出现了差异

1 回复

首先,当前版本的nutz (1.r.58),自定义sql功能并不解析sql的语义,它只分析里面的@和$号

然后,之所以有差异,是nutz走是jdbc prepareStatment传参,执行的是带问号那条sql,而不是格式化好的内嵌了参数的sql。

拷贝到数据库控制台执行的,是后者。

把后者拷贝成自定义sql执行,一般情况下,结果会一致。

但,事实上前者才是精确值,尤其是date的范围判断。因为前者是精确到毫秒的,而后者,格式化到sql的值,通常只到秒,甚至只有日期。

添加回复
请先登陆
回到顶部