2016-03-01 60 views
2

我寫了這個說法得到了前一個月的第一天SQL TO_DATE格式錯誤

select '01.' || TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM.yyyy') from dual 

輸出:01.02.2016

如果我使用TO_DATE格式化,我得到以下錯誤:not a valid month

我目前不在工作的解決方案:

select TO_DATE('01.' || TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM.yyyy')) from dual 

感謝您的幫助/通知:

+0

標籤DBMS! TO_CHAR等是產品特定的功能。 – jarlh

+0

在'to_char()'和'sysdate'的基礎上增加了'oracle'標籤 –

+0

使用'ADD_MONTHS' –

回答

3

你需要一個格式字符串TO_DATE,太:

select TO_DATE('01.' || TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM.yyyy'), 'dd.mm.yyyy') from dual 

但它更容易使用TRUNC建議,由lad2025。

+0

thx來獲得幫助! – piguy

3

你可以使用TRUNC計算的話:使用

SELECT TRUNC(ADD_MONTHS(SYSDATE,-1),'mm') AS result 
FROM dual; 
+0

thx這工作完美 - 但我需要採取我的語法 – piguy