MS SQL Operand类型冲突:日期与bigint不兼容

时间:2019-02-12 15:55:11

标签: sql sql-server

我正在尝试使用我所阅读的Tabibitosan方法来解决有关HackerRank的问题。如果您想阅读问题,请点击以下链接: https://www.hackerrank.com/challenges/projects/problem

这是我的错误: 第1行操作数类型冲突:日期与bigint不兼容

这是我的代码:

SELECT MIN(start_date), MAX(end_date)
FROM (
    SELECT
        start_date, end_date,
        dense_rank() OVER (ORDER BY start_date) AS rn,
        start_date - dense_rank() OVER (ORDER BY start_date) AS grouping
    FROM projects
) AS r
GROUP BY grouping
ORDER BY COUNT(*) ASC, MIN(start_date) ASC;

我的代码可能还有其他问题,但是您不需要解决这些问题,因为我仍在学习和弄清问题,但是我无法解决此错误,搜索也无济于事。

表格:

Task_ID, Int
Start_date, date
End_date, date

日期格式:2015-10-31

我不确定代码为什么不起作用,因为目标基本上与我发现Tabibitosan方法的日期部分相同: https://community.oracle.com/docs/DOC-915680

1 个答案:

答案 0 :(得分:1)

问题是start_date - dense_rank() OVER (ORDER BY start_date)。错误在这里告诉您问题所在;但您不能从bigint中减去date的值。您需要使用DATEADD。因此,将上面的表达式替换为:

DATEADD(DAY,-(dense_rank() OVER (ORDER BY start_date)),start_date)