此查询适用于MariaDB,但不适用于MySQL。我收到错误:SELECT 1 AS one
FROM sched_walks INNER JOIN walks ON walks.id = sched_walks.walk_id
WHERE sched_walks.d_acc = 1
AND sched_walks.docent_id = 6
AND (sched_walks.id != 714)
AND (
scheduled_for_utc <= '2018-03-17 14:34:31.000000'
AND
DATE_ADD(
scheduled_for_utc,
INTERVAL CONVERT(REPLACE(COALESCE(sched_duration, walks.duration), ' hours', ''), integer) HOUR
) >= '2018-03-17 12:34:31.000000'
)
LIMIT 1
这是一个非常密集的查询。因此,即使我查看了手册,我也很难确定哪个功能实际上导致了问题。
B
答案 0 :(得分:2)
改为使用cast()
:
INTERVAL CAST(REPLACE(COALESCE(sched_duration, walks.duration), ' hours', '') as signed) HOUR
实际上,您可以使用convert()
。 。 。关键是使用signed
或unsigned
。
或者只使用静音转换:
INTERVAL COALESCE(sched_duration, walks.duration) + 0 HOUR