SQL 服务器 DATE_DIFF INTERVAL?

SQL Server DATE_DIFF INTERVAL?

你好我做错了什么??

我正在尝试显示 r.reizen 与 r.vertrek 相差 1 天的日期

有人可以帮忙吗

SELECT DISTINCT b.vertrek, b.reiscode, r.bestemming, r.dagen, r.prijs
FROM boekingen b
INNER JOIN reizen r ON b.reiscode = r.reiscode
WHERE b.reiscode <> 'JH10' 
AND ((b.vertrek BETWEEN 
(SELECT MIN(DATE_SUB(vertrek, INTERVAL 1 DAY)) FROM boekingen WHERE          reiscode = 'JH10') AND 
(SELECT MIN(DATE_ADD(vertrek, INTERVAL 1 DAY)) FROM boekingen WHERE                reiscode = 'JH10')) OR 
(b.vertrek BETWEEN (SELECT MAX(DATE_SUB(vertrek, INTERVAL 1 DAY)) FROM            boekingen WHERE reiscode = 'JH10') 
AND (SELECT MAX(DATE_ADD(vertrek, INTERVAL 1 DAY)) FROM boekingen  WHERE reiscode = 'JH10')))
ORDER BY 1

Msg 102, Level 15, State 1, Line 6
Incorrect syntax near '1'.
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near '1'.
Msg 102, Level 15, State 1, Line 8
Incorrect syntax near '1'.
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near '1'.

简单的回答:您在 Microsoft SQL 服务器引擎中使用 DATE_SUB 的 MySQL 语法。这是 Microsoft SQL 错误,对于正在猜测的人....

 Msg 102, Level 15, State 1 

您使用的日期函数是:

DATE_SUB(vertrek, INTERVAL 1 DAY))
DATE_ADD(vertrek, INTERVAL 1 DAY)) FROM 

Microsoft 变体是:

DATEADD(DAY, -1, vertrek)
DATEADD(DAY, 1, vertrek)

Accepteer dit antwoord en punten toekennen , bedankt.

除了修复日期算法之外,如果没有 WHERE 子句中的子查询,您的查询将更易于阅读。将摘要移动到 FROM 子句很容易:

  SELECT DISTINCT b.vertrek, b.reiscode, r.bestemming, r.dagen, r.prijs
  FROM boekingen b INNER JOIN
       reizen r
       ON b.reiscode = r.reiscode CROSS JOIN
       (SELECT MIN(vertrek) as minv, MAX(vertrek) as maxv
        FROM boekingen
        WHERE reiscode = 'JH10'
       ) bm
  WHERE b.reiscode <> 'JH10' AND
        b.vertrek BETWEEN DATEADD(day, -1, minv) and DATEADD(day, 1, minv) AND
        b.vertrek BETWEEN DATEADD(day, -1, maxv) AND DATEADD(day, 1, maxv)
  ORDER BY b.vertek;