我有一個SQL查詢,它將一個C#變量傳遞到我的Oracle數據庫中。將C#日期時間值傳遞給Oracle DB查詢
我無法在我的應用程序中將C#datetime變量「PROCESS_DATE」傳遞到我的查詢中。我沒有收到任何記錄。如果我將查詢複製到我的oracle開發人員工具TOAD中,它工作正常,並且我得到多個記錄。
這裏是我用我的應用程序中查詢:
String SelectAllSQL = "SELECT * FROM REALMS_AUDIT.R2_GROUP_QUERY_RPT WHERE PROCESS_DATE = :pPROCESS_DATE";
我也嘗試了日期時間變量轉換成shortDateString(),所以它匹配的數據庫正是我然後用TO_DATE功能,我有如果我直接在TOAD中查詢日期,沒有任何運氣可以使用。 shortDateString()將我的日期更改爲:1/16/2016
,這正是我需要的,但OracleDataReader不喜歡它。這查詢與TO_DATE功能:
String SelectAllSQL = "SELECT * FROM REALMS_AUDIT.R2_GROUP_QUERY_RPT WHERE PROCESS_DATE = TO_DATE(:pPROCESS_DATE, 'MM-DD-YYYY'";
:pROCESS_DATE
是在傳遞一個日期時間變量
必須有C#和Oracle之間的崩潰有關處理日期時間變量。 我正在使用Oracle DataReader來處理查詢的處理。
OracleDataReader dataReader = mDataAccess.SelectSqlRows (oracleConnection, oracleCommand, sqlCommand, parameters);
while (dataReader.Read ())
{
groupEntityFacilityRptList.Add (ReadRecord (dataReader));
}
如果我使用TO_DATE函數,應用程序將不會進入while循環。如果我使用原始查詢,它會返回任何數據。
DateTime變量PROCESSDATE看起來像這樣:
1/16/2016 12:00:00 AM
我注意到它上有一個時間戳,所以我不知道如果是這樣的問題或沒有。
Oracle中的數據是這樣的:
1/16/2016
您是否嘗試過調試您的程序以查看您的「.ToShortDateString()」是否可以獲得數據庫所需的「1/16/2016」?有時可能會有其他時間格式錯誤(CultureInfo等)。 –
是的,它把它放在這樣的格式:1/16/2016像我需要的。這個問題似乎是將它傳遞給查詢。 – coggicc
你是否在DataSource等中使用了類「SqlConnection」?如果你使用SqlConnection,也可以使用類「SqlCommand」。這允許您使用i.E添加參數。 cmd.Parameters.Add(「@ Date」,varDate);並執行你的操作,如下所示:「SELECT * FROM ... WHERE Date = @Date」,所以真的沒有機會讓這些值變得混亂。 –