将天数添加到 SQL 中的日期?

Adding number of days to a date in SQL?

我有一个 table 持有账户列表以及他们进行交易的第一天。在所有情况下,此日期都早于 2020 年 8 月 31 日。

我想做的是算出每个帐户的第一笔交易与 31/08/2020 之间相隔了多少天,然后将此天数加上 31/08/2020 return 一个日期。

例如,输出应如下所示:

ACCOUNT_NUMBER | FIRST_TRANSACTION_DATE | MIDDLE_DATE | END_DATE
---------------|------------------------|-------------|-----------
1              | 2020-08-01             | 2020-08-31  | 2020-09-30
2              | 2020-08-11             | 2020-08-31  | 2020-09-20

对于帐户 1,由于 first_transaction_date 是 2020 年 8 月 31 日之前的 30 天,因此 end_date 是 20 年 8 月 31 日之后的 30 天。对于帐户 2,end_date 是 20 天之后,因为 first_transaction_date 是 20 天之前,依此类推。

这是我目前的代码:

SELECT  ACCOUNT_NUMBER, FIRST_TRANSACTION_DATE, MIDDLE_DATE, MIDDLE_DATE+DAYS_TO_ADD AS END_DATE
FROM
        (--SUBQUERY 1
        SELECT  ACCOUNT_NUMBER, FIRST_TRANSACTION_DATE, MIDDLE_DATE, DAYS(MIDDLE_DATE)-DAYS(FIRST_TRANSACTION_DATE) AS DAYS_TO_ADD
        FROM
                (--SUBQUERY 2
                SELECT  ACCOUNT_NUMBER, FIRST_TRANSACTION_DATE, '2020-08-31' AS MIDDLE_DATE 
                FROM    TABLE1
                )
        )
;

子查询 1 和 2 工作,但添加 middle_date+days_to_add returns 错误 'invalid character found in a character string argument of the function "DECFLOAT"'.

请问有人知道我怎样才能让它工作吗?

'2020-08-31' 是一个 varchar(10),days(middle_date) 将其转换为日期,因为 days() 需要一个日期,但 middle_date+days_to_add 试图将其转换为 DECFLOAT , 失败了。

在值前添加日期关键字

SELECT  ACCOUNT_NUMBER, FIRST_TRANSACTION_DATE, MIDDLE_DATE, MIDDLE_DATE+DAYS_TO_ADD AS END_DATE
FROM
        (--SUBQUERY 1
        SELECT  ACCOUNT_NUMBER, FIRST_TRANSACTION_DATE, MIDDLE_DATE, DAYS(MIDDLE_DATE)-DAYS(FIRST_TRANSACTION_DATE) AS DAYS_TO_ADD
        FROM
                (--SUBQUERY 2
                SELECT  ACCOUNT_NUMBER, FIRST_TRANSACTION_DATE, date '2020-08-31' AS MIDDLE_DATE 
                FROM    TABLE1
                )
        )
;