sql - MariaDB 中的 DATEADD
问题描述
我在SQL ServerDATEADD
中使用语句,我需要迁移到MariaDB
SUM (
CASE
WHEN CONVERT(varchar, Production.MadeDate , 112) BETWEEN DATE_ADD(DAY, -2, '2018-06-05') AND DATE_ADD(DAY, -2, '2018-06-05') THEN
Production.Qty
ELSE
0
END
) AS 'N-2'
我得到了这样的错误
[42000][1064] 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的 'varchar, Production.MadeDate , 112) BETWEEN DATE_ADD(DAY, -2, '2018-06-05') AND ' 附近使用正确的语法
我从MariaDB DATE_ADD和MariaDB ADDDATE获得了参考,但它仍然无法正常工作
我的版本 MariaDB10.1.32-MariaDB
编辑 :
[解决了]
将SQL 语句从更改CONVERT
为CAST
SUM (
CASE
WHEN CONVERT(varchar, Production.MadeDate , 112) BETWEEN DATE_ADD(DAY, -2, '2018-06-05') AND DATE_ADD(DAY, -2, '2018-06-05') THEN
Production.Qty
ELSE
0
END
) AS 'N-2'
至
SUM (
CASE WHEN CAST(Production.MadeDate AS DATE) BETWEEN DATE_ADD('2018-06-05', INTERVAL -2 DAY) AND DATE_ADD('2018-06-05', INTERVAL -2 DAY) THEN
Production.Qty
ELSE
0
END
) AS 'N-2'
它对我有用
10.1.32-MariaDB
解决方案
你不能CONVERT
在 MariaDB / MySQL 上使用这样的:
CONVERT(varchar, Production.MadeDate, 112)
参数的顺序在 MariaDB / MySQL 上无效。参数的顺序看起来像TSQL/SQL Server 语法。
因此,您可以将当前替换CONVERT
为以下内容之一:
CONVERT(Production.MadeDate, DATE) -- using CONVERT (ODBC syntax)
CAST(Production.MadeDate AS DATE) -- using CAST (SQL92 syntax)
SUM
您可以使用CAST
and使用以下内容DATE_ADD
:
SUM (
CASE WHEN CAST(Production.MadeDate AS DATE) BETWEEN DATE_ADD('2018-06-05', INTERVAL -2 DAY) AND DATE_ADD('2018-06-05', INTERVAL -2 DAY) THEN
Production.Qty
ELSE
0
END
) AS 'N-2'
注意:还要检查条件CASE WHEN
。您在同一天之间进行检查。
推荐阅读
- android - java.lang.StackOverflowError:堆栈大小 8MB:Aftertextchanged
- vb.net - 使用文本框的数据网格过滤器
- wildfly - WildFly 启动时随机加载模块失败
- ruby-on-rails - will_paginate 方法有问题
- youtube-data-api - 想不通,为什么我得到一个 403
- javascript - 将弹出窗口绑定到折线以在反应传单中出现 onMouseover
- docker - 如何从主机检查 docker 容器中是否存在文件夹
- python - 适用于 Python 的 Docker SDK:fileobj
- python-3.x - 如何在 google colab 上显示叶标记?
- elixir - 如何编写 Elixir doctest 来验证空 MapSet