首页 > 解决方案 > PostgreSQL 中 DATEADD 的等价物?

问题描述

我有这个查询,我曾经能够在 SQL Server 中运行,但不能在 PostgreSQL 中运行。您能否提供一个与我不能对 Postgres 使用 DATEADD 一样的查询。

select *
from VTable
where join_date>='1/1/2020' and join_date<'1/1/2021'
and join_date>= DATEADD(day,-30, removed_date)
and lremoved = 1
and countryid = '100010'
order by join_date asc

标签: sqlpostgresql

解决方案


如手册中所述,您可以将整数添加到date表示要添加的天数的值。

此外:ANSI 日期文字优于特定于语言环境的日期(或时间戳)值,因为它们是明确的。

select *
from VTable
where join_date >= date '2020-01-01'
  and join_date < date '2021-01-01'
  and join_date >= removed_date - 30
  and lremoved = 1
  and countryid = '100010'
order by join_date asc

如果join_date是 atimestamp而不是 a date,请使用区间:

  and join_date >= removed_date - interval '30 days'

以上是 Postgres 碰巧尊重的所有标准 ANSI SQL。


推荐阅读