我有一个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”,所以真的没有机会让这些值变得混乱。 –