我有一個挑戰: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