与MariaDB一起使用但在MySQL上出现语法错误而失败的查询

时间:2018-03-14 13:52:38

标签: mysql sql mariadb

此查询适用于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

1 个答案:

答案 0 :(得分:2)

改为使用cast()

  INTERVAL CAST(REPLACE(COALESCE(sched_duration, walks.duration), ' hours', '') as signed) HOUR

实际上,您可以使用convert()。 。 。关键是使用signedunsigned

或者只使用静音转换:

  INTERVAL COALESCE(sched_duration, walks.duration) + 0 HOUR