在 Postgresql if 语句中使用提取日期

Use Extract date in Postgresql if stament

我正在尝试在 postgresql 中执行类似于以下 MSSQL 代码的操作,但出现错误。

MSSQL代码

IF (YEAR(GETDATE()) ='2020') 
SELECT 1
ELSE SELECT 2

Postgres 代码

CREATE PROCEDURE PROCNAME(
    DATEVAR timestamp
)
AS $BODY$
DECLARE
BEGIN 
    if (Extract (YEAR FROM TIMESTAMP DATEVAR) ='2020') THEN
     DO SOMETHING;
    ELSE DO SOMETHING ELSE;
    END IF ;
$BODY$;

错误:“DATEVAR”处或附近的语法错误

删除 timestamp 前缀,仅当您要引用 常量.

时才需要

数字应该与数字进行比较,而不是与字符串进行比较。

CREATE PROCEDURE PROCNAME(
    DATEVAR timestamp
)
AS $BODY$
DECLARE
BEGIN 
    if Extract (YEAR FROM DATEVAR) = 2020 THEN
     DO SOMETHING;
    ELSE DO SOMETHING ELSE;
    END IF;
$BODY$;