【发布时间】:2018-06-05 06:31:58
【问题描述】:
我在 SQL Server 中使用 DATEADD 语句,我需要迁移到 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 服务器版本 在 'varchar, Production.MadeDate, 112) BETWEEN DATE_ADD(DAY, -2, '2018-06-05') AND ' 在第 3 行
我收到了来自 MariaDB DATE_ADD 和 MariaDB ADDDATE 的推荐信,但它仍然不起作用
我的 MariaDB 10.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
【问题讨论】:
-
我不明白你的
WHERE子句应该检查什么。从逻辑上讲,日期范围是两端相同的日期。您可以在您的问题中添加一些示例数据吗? -
为什么在将 Date 与 Date 进行比较之前将其转换为 VarChar?
-
@dnoeth - 也许是为了摆脱时间部分?
-
@RickJames:是的,可能是 SQL Server 中的 DateTime。但是
CAST(timestampCol AS DATE)更简单:-)