如何在 SQL (Firebird) 中获取下周的日期?

sun*_*ine 2 select firebird date

我想使用 SQL 语句获取日期。例如,如果日期是“2018-08-07”输出,则应返回:“2018-08-14”(一周后)。然后我将获取这些日期之间的总行数。

SELECT count(*) FROM orders  WHERE dates BETWEEN '2018-08-07'  AND 
DATEADD(day,7,'2018-08-07');
Run Code Online (Sandbox Code Playgroud)

但是,由于 dateadd() 函数,我收到此错误:

SQL Error [335544634] [42000]: Dynamic SQL Error; SQL error code = -104; Token unknown - line 1, column 1; DATEADD [SQLState:42000, ISC error code:335544634]
Run Code Online (Sandbox Code Playgroud)

Erg*_*sha 5

您需要使用 DATEADD(day,7,date '2018-08-07'),注意使用的关键字日期。

考虑以下数据

create table orders(
  dates date
);

INSERT INTO orders (dates)
SELECT  '2018-08-05 ' FROM RDB$DATABASE UNION ALL
SELECT  '2018-08-06' FROM RDB$DATABASE UNION ALL
SELECT  '2018-08-07' FROM RDB$DATABASE UNION ALL
SELECT  '2018-08-08' FROM RDB$DATABASE UNION ALL  
SELECT  '2018-08-09' FROM RDB$DATABASE;

SELECT count(*) 
FROM orders 
WHERE dates BETWEEN '2018-08-07'  AND  DATEADD(day,7,date '2018-08-07');
Run Code Online (Sandbox Code Playgroud)

结果

COUNT
  3
Run Code Online (Sandbox Code Playgroud)

https://dbfiddle.uk/7Vh6wDiw