Function PostgreSQL日期转换函数

Function PostgreSQL日期转换函数,function,postgresql,date-conversion,Function,Postgresql,Date Conversion,我有一个挑战: 我在SQL Server中有以下代码,我想将其移动到PostgreSQL DBMS 我将其改编为PostgreSQL,如下所示: CREATE function public.SEMANA_ISO (fecha date) returns integer as $$ DECLARE semana_ISO int= date_part ('week',fecha)+1 -date_part('week',CAST(date_part('year',fecha)

我有一个挑战:

我在SQL Server中有以下代码,我想将其移动到PostgreSQL DBMS

我将其改编为PostgreSQL,如下所示:

CREATE function public.SEMANA_ISO (fecha date) returns integer as $$ 
DECLARE 
    semana_ISO int= date_part ('week',fecha)+1
    -date_part('week',CAST(date_part('year',fecha) as CHAR(4)) + '0104');
BEGIN 
    IF (semana_ISO=0)
    THEN
    semana_ISO=public.SEMANA_ISO(CAST(date_part('year',fecha)-1
    AS CHAR(4)) + '12' + CAST(24 + date_part('day',fecha) AS CHAR(2)))+1;

    ELSIF ((date_part('month',fecha)=12) AND ((date_part('day',fecha)-date_part('day',fecha))>=28))
    THEN
    semana_ISO=1;

    END IF; 

RETURN semana_ISO;   
END;   
$$ LANGUAGE plpgsql;  
正如您可能看到的,我试图使它看起来与SQL Server中的最相似。 但是,当我尝试运行此函数并对其进行测试时:

Select public.SEMANA_ISO('28/12/2014');
DMBS显示了许多错误:

ERROR: operator does not exist: character + unknown
LINE 2: ...rt('week',CAST(date_part('year',fecha) as CHAR(4)) + '0104')

HINT: No operator matches the name and type of the arguments. You may need to add explicit type casts. 
QUERY: SELECT date_part ('week', date) +1 
-date_part ('week', CAST (date_part ('year', date) as CHAR (4)) + '0104') 
CONTEXT: PL / pgSQL function semana_iso (date) at line 5 during initialization of local variables in the statement block
我试着做以下几点。 从以下输入日期格式:dd/mm/yyyy我想使用上面的函数将其显示为下一个输出格式:mm-dd-yyyy

我曾想过,在执行一个更简单的函数时,可以接收给定格式(dd/mm/yyyy)的日期,并使用set datestyle=mdy语句在函数体中更改它,最后打印或返回它

你有什么建议吗


感谢您的帮助和时间

猜测您可能需要一个
函数
如下

CREATE function a_date_conv (fecha date) returns text as $$ 
select to_char(fecha, 'mm-dd-yyyy');  
$$ LANGUAGE sql;  
选择会议日期(2014年10月8日)


实际上,您使用此
函数/存储的
过程的目的是什么?只有您想转换日期样式来更改日期格式。从dd/mm/yyyyy到mm-dd-yyyyyyyyk,用于表中的特定项,或者什么?猜测:您可以这样尝试
选择to_char(now(),'mm-dd-yyyy')
选择字符(现在(),'mm dd yyyy')
将以
mm dd yyyy
格式返回日期,以便您可以在func
select to_char(fecha,'mm dd yyyy')中包含该日期就像这样太棒了,我刚刚完成函数的代码编写。谢谢你的帮助,飞豹
Result
-------
10-08-2014