【问题标题】:How to retrieve data from oracle database based between 2 datetime field knowing input only date?如何在知道仅输入日期的 2 个日期时间字段之间从 oracle 数据库中检索数据?
【发布时间】:2019-11-07 20:07:43
【问题描述】:

我正在尝试在两个日期之间从 oracle 数据库中检索数据。我不断收到以下错误:

“Oracle.ManagedDataAccess.Client.OracleException”类型的异常发生在 Oracle.ManagedDataAccess.dll 中,但未在用户代码中处理

我不确定我写的查询是否存在问题:

public List<GetterAndSetterObj> GetDataBasedOnSelectedPeriod(DateTime fromDate, DateTime toDate)
    {

        using (ProdOracleContext oracleContext = new ProdOracleContext())
        {
            using (OracleCommand command = oracleContext.CreateCommand)
            {
                command.CommandText = string.Format("select * from datesTable where TRUNC(dates) BETWEEN TO_DATE('{0}','DD-MON-RRRR') AND TO_DATE('{1}','DD-MON-RRRR')", fromDate, toDate);
                var queryResult = oracleContext.Get(command);
                var list_v_sum_slaies_by_lice_no = new List<getterAndSetterObj>();
                foreach (DataRow row in queryResult.Rows)
                {
                    finalList.Add(new getterAndSetterObj
                    {
                        LICENCE_NUMBER = row["LICENCE_NUMBER"].ToString(),
                        SHOP_NAME = row["SHOP_NAME"].ToString(),
                        dates= row.Field<DateTime>("dates"),
                        SUM_ALL = int.Parse(row["SUM_ALL"].ToString())
                    });
                }   return finalList;
            }
        }
    } 

然后我使用这些方法调用函数:

public List<v_sum_slaies_by_lice_no> GetDataBasedOnSelectedPeriod(string fromDate, string toDate)
    {
        DateTime OfromDate = DateTime.ParseExact(fromDate, "dd/MM/yyyy", null);
        DateTime OtoDate = DateTime.ParseExact(toDate, "dd/MM/yyyy", null);  
        return dataBase.GetDataBasedOnSelectedPeriod(OfromDate, OtoDate);
    }

注意,输入将是这样的: 20/06/2019 22/06/2019

注意,存储在数据库中的日期是包含时间的日期时间,我只想根据日期获取数据

【问题讨论】:

  • 请显示整个堆栈跟踪,因为您显示的错误不是很有用。
  • 这是我没有得到任何附加信息的唯一输出。请注意,我认为问题出在查询上,我相信我写的内容对 oracle 数据库不可读。 @OldProgrammer

标签: c# sql asp.net oracle


【解决方案1】:

尝试更改以下代码行。如果它不起作用,请分享实际的 oracle 错误。

 command.CommandText = string.Format("select * from datesTable where TO_CHAR(dates, 'DDMMYYYY') BETWEEN '{0}' AND '{1}'", fromDate.ToString("ddMMyyyy"), toDate.ToString("ddMMyyyy"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多