2010-10-28 76 views
1

我試圖將當前日期 - 2個月轉換爲格式yyyymmdd並從中減去1900000。將日期轉換爲AS400中的字符

甲骨文很容易對我來說

SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-2),'YYYYMMDD') - 19000000 FROM DUAL 

有人建議我同爲AS400

在此先感謝。

回答

-1
EVAL numericField = %dec(%date(alphaDate:*MDY/):*MDY) 

炭字段必須是炭字段的格式後面的PARM(I用* MDY以「/」的示例)。

表達式末尾的parm必須是數字字段的格式。 所以這個例子轉換11/22/2008到11222008.

如果你想2008-11-22轉換爲20081122使兩個parms * ISO。

+0

謝謝,但你請給我一些類似oracle的東西,它是選擇DEC(DATE((CURRENT_DATE -2 MONTHS),ISO)FROM SYSIBM.SYSDUMMY1的格式。我將轉換爲yyyy-mm-dd,但之後我不能夠,請你指導。謝謝你的時間和幫助 – kdev 2010-10-28 18:15:02

0

SELECT DEC(SUBSTR(CHAR(DATE(NOW()) - 2個月),ISO),1,4)|| (日期(現在()) - 2個月),ISO),6,2)。 SUBSTR(CHAR(DATE(NOW()) - 2個月),ISO),9,2),8,0) - 19000000 FROM DUAL

2

這應該做的伎倆:

select char(((year(d)-1900) * 100 + month(d)) * 100 + day(d))  
from (select (curdate() - 2 months) as d from sysibm/sysdummy1) s 

或者如果你喜歡做同樣沒有嵌套查詢:

select char(((year(curdate() - 2 months) - 1900) * 100 
     + month(curdate() - 2 months)) * 100 
     + day(curdate() - 2 months)) 
from sysibm/sysdummy1 

乾杯

0

這是豆蔻末的答案,但應該做的伎倆:)

select char((year(curdate() - 2 months) * 100   
    + month(curdate() - 2 months)) * 100   
    + day(curdate() - 2 months))     
from sysibm/sysdummy1         

這是幾乎相同karol.mlot的答案,但是,你會得到正確的格式,因爲你要的年月日

1

最簡單的可能是:

SELECT DEC(REPLACE(CHAR(CURDATE() - 2 MONTHS,ISO),'-',''))-19000000 FROM SYSIBM/SYSDUMMY1 

有些想法可能挖出更好的東西。但無論如何它都不會變得更簡單。