Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Oracle数据库获取当前的数据_C#_Asp.net_Datetime_Oracle12c - Fatal编程技术网

C# 从Oracle数据库获取当前的数据

C# 从Oracle数据库获取当前的数据,c#,asp.net,datetime,oracle12c,C#,Asp.net,Datetime,Oracle12c,我试图根据列中定义为Timestamp6的值从Oracle12CDB获取数据,但没有返回任何内容。我尝试了绑定参数的不同变体,但都没有成功 我认为问题在于,C DateTime变量dtSelectedDate被传递给执行查询的函数,它显示为05/14/2021 12:00:00。但是,数据库中2021年5月14日当天的记录列为05/14/2021 00:00:00.000000000 public DataSet GetIDCLogData(int iLogType, DateTime dtSe

我试图根据列中定义为Timestamp6的值从Oracle12CDB获取数据,但没有返回任何内容。我尝试了绑定参数的不同变体,但都没有成功

我认为问题在于,C DateTime变量dtSelectedDate被传递给执行查询的函数,它显示为05/14/2021 12:00:00。但是,数据库中2021年5月14日当天的记录列为05/14/2021 00:00:00.000000000

public DataSet GetIDCLogData(int iLogType, DateTime dtSelectedDate)
{
    List<OracleParameter> spParams = new List<OracleParameter>();
    DataSet ds = new DataSet();
    string sWhere = string.Empty;
    string sQuery = "SELECT A, B,C, D " +
        "FROM REQRESPLOG " +
        //"WHERE LOGTYPEID = :LogTypeID AND LOGDATE = :LogDate";
        "WHERE LOGTYPEID = :LogTypeID AND LOGDATE = TO_TIMESTAMP(:LogDate, 'mm/dd/yyyy')";

    try
    {
        spParams.Add(new OracleParameter("LogTypeID", OracleDbType.Int16, iLogType, ParameterDirection.Input));
        //spParams.Add(new OracleParameter("LogDate", OracleDbType.TimeStamp, dtSelectedDate.ToString("MM/dd/yyyy"), ParameterDirection.Input));
        //spParams.Add(new OracleParameter("LogDate", OracleDbType.Date, dtSelectedDate.ToString("MM/dd/yyyy"), ParameterDirection.Input));
        spParams.Add(new OracleParameter("LogDate", OracleDbType.Varchar2, dtSelectedDate.ToString("MM/dd/yyyy") + " 00:00:00", ParameterDirection.Input));
        dbContext.Open();
        dbContext.ExecuteOraAdapterFillCmd(sQuery, spParams, ref ds);
    }
    catch (Exception e)
    {
        throw e;
    }
    finally
    {
        dbContext.Close();
    }
    return ds;
}

使用OracleDbType.Timestamp在注释中的方式,但不要对值调用ToString。如果您需要该日期的午夜,请使用Date属性。没有帮助。我认为它是C日期时间变量中的12:00:00。用户从日历中选择2021年5月14日,传递给API的变量为05/14/2021 12:00:00,而在数据库中,行具有2021年5月14日,没有时间,只有日期。只要列是时间值,并且在午夜,或者您已将其修剪为midnigh,并且在需要时使用date属性在午夜传递DateTime值,它们会比较相等。整个12:00:00与00:00:00问题只适用于在某处使用字符串的情况。不要使用日期/时间值执行此操作。不要把表现和价值混为一谈。这个问题是由一个愚蠢的错误造成的,这个错误只发生在周五下午晚些时候。不过,既然你回答了,而我实际上从中学到了一些东西,那么把它改成一个答案,我会给它打分。