2012年9月12日

解決"ORA-01830: 再轉換整個字串前,日期格式圖片就結束了"

我的程式是C#.net 2.0 連接到Oracle 資料庫進料存取,在進行insert資料時,出現了以下的錯誤


image
Debug了一下,是有個to_date的函式出問題,你可以跟Oracle下以下的指令,就可以得到上面的錯誤:
select to_date('2012/12/1  11:00:01','yyyy/MM/dd') from dual
這是很明顯的錯誤,但是往往是因為我們在.net裡沒有處理好日期的格式傳給Oracle所造成的,
就像以下的程式(OLEDB):
String sql =”insert test (id,creation) values (?,to_date(?,’yyyy/MM/dd’))”
OleDbCommand insertCommand = new OleDbCommand(sql, conn)
using  (insertCommand .Parameters)
{
  Add( "@ID", OleDbType.VarChar, 80).Value = "toasters";
Add( "@Creation", OleDbType.VarChar).Value =  DateTime.Now.ToString();
}
以是在DateTime.Now.ToString() 沒指令格式,一般會輸出'2012/09/01 下午 13:20:20'
所以這邊改成DateTime.Now.ToString('yyyy/MM/dd')便可解決這項錯誤。

沒有留言:

張貼留言