我有一个挑战:
我在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语句在函数体中更改它,最后打印或返回它
你有什么建议的人?
你的帮助&时间永远受到赞赏!
答案 0 :(得分:0)
猜测您可能需要Function
,如下所示
CREATE function a_date_conv (fecha date) returns text as $$
select to_char(fecha, 'mm-dd-yyyy');
$$ LANGUAGE sql;
选择a_date_conv('08 / 10/2014')
Result
-------
10-08-2014