Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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# 错误的日期格式C,Oracle_C#_Oracle - Fatal编程技术网

C# 错误的日期格式C,Oracle

C# 错误的日期格式C,Oracle,c#,oracle,C#,Oracle,我正在尝试以正确的格式获取日期dd/mm/yyyy。目前它的格式是:MM-DD-YYYY HH24:MI:SS当我将其更改为DD/MM/YYYY时,它在数据库Oracle中工作。当我在我的应用程序中运行它时,我得到异常:IndexOutfrange在: this.InfoList9.Add(dr["start_rcv_datetime"].ToString()); 请看下面我的代码 public List<String> InfoList = new List<String&

我正在尝试以正确的格式获取日期dd/mm/yyyy。目前它的格式是:MM-DD-YYYY HH24:MI:SS当我将其更改为DD/MM/YYYY时,它在数据库Oracle中工作。当我在我的应用程序中运行它时,我得到异常:IndexOutfrange在:

this.InfoList9.Add(dr["start_rcv_datetime"].ToString());
请看下面我的代码

public List<String> InfoList = new List<String>();

private void populatelblDate()
{
    conn.Open();
    string query;
    query = "select to_char(dg.start_rcv_datetime,'dd/mm/yyyy') from dc_pallet dp, dc_pallet_stock dps , dc_grv dg , sku s ,prod_size ps,colour c ,purch_order_carton_sku pocs , dc_crane_instruc dci where dps.pallet_id_no = '" + palletId.ToString() + "' and dp.pallet_id_no = dps.pallet_id_no and dg.dc_grv_id_no = dps.dc_grv_id_no and dg.order_no = dps.order_no and dg.company_id_no = dps.company_id_no and s.company_id_no = dps.company_id_no and s.company_id_no = dg.company_id_no and dps.company_id_no = c.company_id_no and dps.company_id_no = ps.company_id_no and s.prod_size_id_no = ps.prod_size_id_no and s.colour_id_no = c.colour_id_no and dps.company_id_no = ps.company_id_no and pocs.order_no = dps.order_no and pocs.carton_code = dps.carton_code and pocs.company_id_no = dps.company_id_no and pocs.sku_id_no = s.sku_id_no and dci.pallet_id_no(+) = dp.pallet_id_no";

    OracleCommand cmd = new OracleCommand(query, conn);
    OracleDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        this.InfoList.Add(dr["start_rcv_datetime"].ToString());
    }
    dr.Close();
    conn.Close();
}

private void frmInfo_Load(object sender, EventArgs e)
{ 
    populatelblDate();
    lbl1.Text = this.InfoList[0];
}
然后我还有一个prev和next按钮…

您的indexoutfrange异常表明,直接的问题是结果集不包含start\u rcv\u datetime列-可能是因为to\u char转换

根本不要在数据库端处理字符串。将该值作为日期时间获取,然后在客户端以您想要的格式对其进行格式化

从查询中删除了to_char部分后,使用dr.GetDateTime获取值:

query = "select dg.start_rcv_datetime from ...";

using (OracleCommand cmd = new OracleCommand(query, conn))
{
    using (OracleDataReader dr = cmd.ExecuteReader())
    {
        int dateColumn = dr.GetOrdinal("start_rcv_datetime");
        while (dr.Read())
        {
            DateTime date = dr.GetDateTime(0);
            // Or whatever - consider cultural implications
            string text = date.ToString("dd/MM/yyyy");
            InfoList.Add(text);
        }
    }
}
请注意using语句-您应该始终确保清理与数据库相关的资源。

您的IndexOutfrange异常表明直接的问题是结果集不包含start\u rcv\u datetime列-可能是由于到字符的转换

根本不要在数据库端处理字符串。将该值作为日期时间获取,然后在客户端以您想要的格式对其进行格式化

从查询中删除了to_char部分后,使用dr.GetDateTime获取值:

query = "select dg.start_rcv_datetime from ...";

using (OracleCommand cmd = new OracleCommand(query, conn))
{
    using (OracleDataReader dr = cmd.ExecuteReader())
    {
        int dateColumn = dr.GetOrdinal("start_rcv_datetime");
        while (dr.Read())
        {
            DateTime date = dr.GetDateTime(0);
            // Or whatever - consider cultural implications
            string text = date.ToString("dd/MM/yyyy");
            InfoList.Add(text);
        }
    }
}

请注意using语句-您应该始终确保清理与数据库相关的资源。

您的第一列没有名称,因此无法使用start\u rcv\u datetime检索它

直接的解决方案是将sql更改为

query = "select to_char(dg.start_rcv_datetime,'dd/mm/yyyy') as start_rcv_datetime from dc_pallet dp, dc_pallet_stock dps , dc_grv dg , sku s ,prod_size ps,colour c ,purch_order_carton_sku pocs , dc_crane_instruc dci where dps.pallet_id_no = '" + palletId.ToString() + "' and dp.pallet_id_no = dps.pallet_id_no and dg.dc_grv_id_no = dps.dc_grv_id_no and dg.order_no = dps.order_no and dg.company_id_no = dps.company_id_no and s.company_id_no = dps.company_id_no and s.company_id_no = dg.company_id_no and dps.company_id_no = c.company_id_no and dps.company_id_no = ps.company_id_no and s.prod_size_id_no = ps.prod_size_id_no and s.colour_id_no = c.colour_id_no and dps.company_id_no = ps.company_id_no and pocs.order_no = dps.order_no and pocs.carton_code = dps.carton_code and pocs.company_id_no = dps.company_id_no and pocs.sku_id_no = s.sku_id_no and dci.pallet_id_no(+) = dp.pallet_id_no";
但是,您可以简单地从数据库返回日期作为日期时间,然后对结果使用string.Format

例如


您的第一列没有名称,因此无法使用start\u rcv\u datetime检索它

直接的解决方案是将sql更改为

query = "select to_char(dg.start_rcv_datetime,'dd/mm/yyyy') as start_rcv_datetime from dc_pallet dp, dc_pallet_stock dps , dc_grv dg , sku s ,prod_size ps,colour c ,purch_order_carton_sku pocs , dc_crane_instruc dci where dps.pallet_id_no = '" + palletId.ToString() + "' and dp.pallet_id_no = dps.pallet_id_no and dg.dc_grv_id_no = dps.dc_grv_id_no and dg.order_no = dps.order_no and dg.company_id_no = dps.company_id_no and s.company_id_no = dps.company_id_no and s.company_id_no = dg.company_id_no and dps.company_id_no = c.company_id_no and dps.company_id_no = ps.company_id_no and s.prod_size_id_no = ps.prod_size_id_no and s.colour_id_no = c.colour_id_no and dps.company_id_no = ps.company_id_no and pocs.order_no = dps.order_no and pocs.carton_code = dps.carton_code and pocs.company_id_no = dps.company_id_no and pocs.sku_id_no = s.sku_id_no and dci.pallet_id_no(+) = dp.pallet_id_no";
但是,您可以简单地从数据库返回日期作为日期时间,然后对结果使用string.Format

例如


离题:您确定在SQL查询中需要所有这些联接吗?:这不是整个查询离题:您确定在SQL查询中需要所有这些联接吗?:这不是整个查询,只是为了在将数据从Oracle表传输到Ms SQL时添加我的案例。在Oracle源表中有一个日期类型的字段。在传输过程中,我使用了ExecuteReader,该字段的值作为字符串写入目标表Ms Sql。然而,由于所讨论的年份是2032年,后来被翻译成1932年。因此,对于这种情况,必须使用这种方法获取字段类型,如果是日期,则相应地设置格式。@Vladimir.RL:更好的解决方案是避免将字段作为字符串写入目标表部分。若你们并没有任何格式和解析,那个么这种事情很难发生……只是在将数据从Oracle表传输到Ms Sql时加上我的例子。在Oracle源表中有一个日期类型的字段。在传输过程中,我使用了ExecuteReader,该字段的值作为字符串写入目标表Ms Sql。然而,由于所讨论的年份是2032年,后来被翻译成1932年。因此,对于这种情况,必须使用这种方法获取字段类型,如果是日期,则相应地设置格式。@Vladimir.RL:更好的解决方案是避免将字段作为字符串写入目标表部分。如果你没有任何格式和解析,这类事情很难发生。。。