Sql 将Int添加到DateTime

Sql 将Int添加到DateTime,sql,postgresql,Sql,Postgresql,我有一个表,有两列RegisterDate和ActiveDays(int) 我想将ActiveDays添加到RegisterDate,并将其与现在的日期进行比较 我使用下面的查询 select RegisterDate + INTERVAL cast(ActiveDays as text) || ' day' ..... 但这会导致错误: “cast”处或附近出现语法错误 要解释您得到的错误,您可以使用以下内容: INTERVAL cast(ActiveDays as text) ||

我有一个表,有两列
RegisterDate
ActiveDays
(int)

我想将ActiveDays添加到RegisterDate,并将其与现在的日期进行比较

我使用下面的查询

select RegisterDate  + INTERVAL  cast(ActiveDays as text) || ' day' .....
但这会导致错误:

“cast”处或附近出现语法错误


要解释您得到的错误,您可以使用以下内容:

INTERVAL  cast(ActiveDays as text) || ' day'
乍一看,它的工作原理应该与:

INTERVAL '5 day'
但是这里的
INTERVAL
实际上不是一个cast操作符,它是一个文本字符串类型的注释-基本上,定义了引号的含义

如果您将其切换到正常的
转换模式
,它将工作:

CAST(CAST(ActiveDays as text) || ' day' as INTERVAL)
或者您可以使用Postgres的非标准的
cast操作符,这使它更具可读性:

(ActiveDays::text || ' day')::interval
或者,正如建议的那样,您可以采用不同的方法,将一天乘以适当的整数:

ActiveDays * INTERVAL '1 day'
请注意,这里我使用的是您先前尝试使用的文本语法