mysql - 适用于 MariaDB 但在 MySQL 上因语法错误而失败的查询

标签 mysql sql mariadb

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

相关文章:

mysql - 为什么 WordPress 无法自动增加用户和用户元表的新行?

sql - PostgreSQL 中的查询优化

php - 如何从 Joomla 2.5 数据库列、字段名称和值中获取值

sql - 每组值的自定义序列/自动增量

mysql - 不正确的日期时间值 '0000-00-00 00:00:00' - Date_Sub() in Having

mysql - 三表连接问题与计数

php - 如何正确设置这四个查询的格式?

mysql - MySQL 中美国参议员名单的数据库设计

php - Joomla 使用 Nginx 和 PHP-FPM 加载 10 秒以上

mysql - 在选择搜索中使用 information_schema.COLUMNS