我有一个挑战:PostgreSQL日期转换函数
我在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语句的日期将其更改为函数的主体并最终打印或返回。
你有什么建议人?
您的帮助&时间总是感激!
其实是出于什么目的你使用这个功能' /存储过程?只有你想转换'datestyle'? – 2014-10-08 08:06:41
更改日期的格式。从dd/mm/yyyy到mm-dd-yyyy – 2014-10-08 08:08:21
确定某个表格中的特定项目还是什么? – 2014-10-08 08:09:20