【发布时间】:2020-02-19 17:51:18
【问题描述】:
我正在将一系列查询转换为 Knex 语法。 我对这个查询有疑问:
SELECT id,reviewed,log_reference,CONVERT(notification USING utf8),create_time,update_time,store,user_id
FROM store_failure_log
WHERE reviewed = 0
AND create_time BETWEEN NOW() - INTERVAL 18 HOUR AND NOW();
更准确地说是这一行:
SELECT id,reviewed,log_reference,CONVERT(notification USING utf8),create_time,update_time,store,user_id
我有这个 Knex:
knex('store_failure_log')
.select('id', 'reviewed', 'log_reference', 'CONVERT(notification USING utf8)', 'create_time', 'update_time', 'store', 'user_id').convert('notification USING utf8')
.where('reviewed', 0)
.where(knex.raw('create_time BETWEEN NOW() - INTERVAL 18 HOUR AND NOW()'))
产生这个 sql 查询:
select `id`, `reviewed`, `log_reference`, `CONVERT(notification USING utf8)`, `create_time`, `update_time`, `store`, `user_id` from `store_failure_log` where `reviewed` = 0 and create_time BETWEEN NOW() - INTERVAL 18 HOUR AND NOW()
问题出在:转换(使用 utf8 的通知)。
查询无效,因为转换在括号中。用knex怎么写?
一般而言,如何在 KNEX 语法中包含 SQL 函数调用?
【问题讨论】:
-
不是直接答案,但如何在连接字符串中指定 UTF8,然后在查询中跳过
CONVERT? -
这是可能的解决方案。但我想更好地掌握 Knex,尤其是如何使用 SQL 函数调用。