2012-10-29 84 views
1
select to_date(to_number(to_char(created_on_date,'MMDDYYYY')),'MMDDYYYY') from is_mdm_customer 

以上查詢是給如何日期列轉換爲MMDDYYYY格式比較MMDDYYYY格式的其他表中的列

Error starting at line 1 in command: 
select to_date(to_number(to_char(created_on_date,'MMDDYYYY')),'MMDDYYYY') from is_mdm_customer 
Error report: 
SQL Error: ORA-01843: not a valid month 
01843. 00000 - "not a valid month" 
*Cause:  
*Action: 
+1

什麼樣的數據類型是你的「日期」?你並沒有像VARCHAR那樣保持他們!? – MatBailie

+0

什麼哦你想用'to_xxx'函數嵌套做什麼? –

回答

2

,可以儲存日期類型爲DATE列,而不是VARCHAR處理。如果您需要月份,日期和年份,則也可以爲這些列添加列。

只是比較日期。如果您不想比較小時,分鐘和秒數,我會以這種方式存儲它們:在INSERT或UPDATE它的那天將時間設置爲午夜。然後您可以直接比較日期。

格式應該隻影響視圖渲染,僅此而已。

+0

他們必須是DATE,或將沒有意義,首先做一個TO_CHAR,不是嗎?我想他想不分秒等 –

+0

感謝duffymo ....建議的工作與日期工作! – user1782212

0

你可以使用這個如果列created_on_date被定義爲日期列。

從is_mdm_customer中選擇to_char(created_on_date,'MMDDYYYY');

1

如果你只是想剪掉時間部分使用TRUNCATE()。

select TRUNC(created_on_date) from is_mdm_customer 

您也可以傳遞一個參數給TRUNCATE函數以不同的方式截斷日期。但是,如果你只想要YEAR,EXTRACT()通常會更好。

Ref:Oracle 11g Trunc(Date)

相關問題