2014-01-09 39 views
0

我有一個查詢,我需要使用Oracle檢查兩個日期之間的日期。每當我運行代碼時,我都會得到一個ORA-01843:不是有效的月份錯誤。但是每當我從sql中刪除兩個參數中的任何一個,它都可以正常工作,但試圖使用兩個日期參數會引發錯誤。我錯過了什麼?第二個日期參數拋出ORA-01843:不是有效的月份錯誤

 StringBuilder sql = new StringBuilder(); 
     DateTime yearBegin = new DateTime(Convert.ToInt32(taxYear) + 1, 1, 1); 
     DateTime yearEnd = new DateTime(Convert.ToInt32(taxYear) + 1, 12, 31); 
     sql.Append(
      "SELECT * FROM TABLE WHERE FIELD = '1099' AND CREATED_DT >= TO_DATE(:createdYearBegin, 'MM/DD/YYYY') AND CREATED_DT <= TO_DATE(:createdYearEnd, 'MM/DD/YYYY') AND SSN = :ssn"); 
     try 
     { 
      using (OracleConnection cn = new OracleConnection(ConfigurationManager.AppSettings["cubsConnection"])) 
      using (OracleCommand cmd = new OracleCommand(sql.ToString(), cn)) 
      { 
       cmd.Parameters.Add("ssn", ssn); 
       cmd.Parameters.Add("createdYearBegin", yearBegin.ToShortDateString()); 
       cmd.Parameters.Add("createdYearEnd", yearEnd.ToShortDateString()); 
       cn.Open(); 
       OracleDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
       ret = dr.HasRows; 
      } 
     } 
+0

日期出來正確的調試器看的時候,如果它是一個問題)ToShortDateString的結果(比它也有同樣的問題,是否有一個或兩個日期參數,但是因爲如果我刪除一個,或其他日期參數,並運行它只有一個參數它工作正常。 –

+0

所以你可以看到兩個日期生成的sql是什麼?例如這裏:http://stackoverflow.com/questions/265192/get-the-generated-sql-statement-from-a-sqlcommand-object –

+0

的SQL,則如預期(雖然我不得不添加的日期周圍的單引號:SELECT * FROM TABLE WHERE FIELD ='1099'AND CREATED_DT> = TO_DATE('1/1/2014','MM/DD/YYYY')AND CREATED_DT <= TO_DATE('12/31/2014','MM/DD/YYYY')和SSN =‘ssnNumber’ –

回答

1

認爲您的參數順序有問題。

如果不綁定的名字參數,它們是由坐席綁定(指在其中添加參數的順序取)。

只是嘗試添加:

cmd.BindByName = true; 
+0

日期出來正確的,如果它是與ToShortDateString()的結果的問題比它有同樣的問題,是否有一個或兩個日期參數,而是因爲如果我刪除一個,或其他日期參數,並用它工作正常的參數只是一個運行它。 –

+0

@UnHolyRam我發現別的東西,你可以給一個嘗試? –

+0

我們有一個贏家。感謝 –

0

您希望日期格式爲MM/DD/YYYY,但它不是以這種格式保證ToShortDateString()返回。格式特定是必要的。但是好了,我甚至不知道什麼是您使用提供進一步的幫助編程語言...

0

打印出來ToShortDateString的結果,你會看到會發生什麼。另外,我同意「你應該提供一種格式,因爲你不能依靠默認設置」。

+0

日期時間在C#與合作0到11?真的嗎?這是從哪裏來的? –

+0

看起來像J ava給我,而OP沒有提供語言標籤。刪除了我的答案的那部分。 –

相關問題