此查询适用于 MariaDB,但不适用于 MySQL。我收到错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“整数)HOUR 附近使用的正确语法”
这是一个非常密集的查询。因此,尽管我已经阅读了手册,但我还是无法确定哪个函数实际上导致了问题。
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
最佳答案
使用 cast()
代替:
INTERVAL CAST(REPLACE(COALESCE(sched_duration, walks.duration), ' hours', '') as signed) HOUR
实际上,您可以使用 convert()
。 。 。 key 使用有符号
或无符号
。
或者只是使用静默转换:
INTERVAL COALESCE(sched_duration, walks.duration) + 0 HOUR
关于mysql - 适用于 MariaDB 但在 MySQL 上因语法错误而失败的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49279556/