Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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
在月份字段中错误插入日期sql如何更改_Sql_C# 4.0_Sql Server 2008 R2_Date Formatting - Fatal编程技术网

在月份字段中错误插入日期sql如何更改

在月份字段中错误插入日期sql如何更改,sql,c#-4.0,sql-server-2008-r2,date-formatting,Sql,C# 4.0,Sql Server 2008 R2,Date Formatting,不幸的是,我在sql中插入了一个日期dd-mm-yyyy,但它假设它是mm-dd-yyyy,现在有50多个字段是这样的,我如何更改它?我发现一个异常是无效日期,当时我正在按超过12的日期进行报告。现在我想更改所有插入的字段而不丢失它 UPDATE tableName SET dateColumn = MONTH(dateColumn) + "-" + DAY(vdateColumn) + "-" + YEAR(dateColumn) 我希望这项工作,即使我没有测试自己。请使用WHERE子句将更

不幸的是,我在sql中插入了一个日期dd-mm-yyyy,但它假设它是mm-dd-yyyy,现在有50多个字段是这样的,我如何更改它?我发现一个异常是无效日期,当时我正在按超过12的日期进行报告。现在我想更改所有插入的字段而不丢失它

UPDATE tableName
SET dateColumn = MONTH(dateColumn) + "-" + DAY(vdateColumn) + "-" + YEAR(dateColumn)
我希望这项工作,即使我没有测试自己。请使用WHERE子句将更新仅限于受影响的行

UPDATE yourTable
SET yourDateColumn = Convert(datetime,yourDateColumn,101)

让我知道这是否解决了您的问题。

没有任何效果,但最后我通过c控制台手动重置了它

Console.WriteLine("Changing Orderdate");
        Console.WriteLine("~~~~~~~~~~~~~~~~~~");
        List<string> date = new List<string>();
        List<string> no = new List<string>();

        int i = 0;

        SqlCommand cmd = new SqlCommand("select DATEPART(yyyy,orderdate) as y, DATEPART(mm,orderdate) as m, DATEPART(dd,orderdate) as d, bno from bill", con);

        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            date.Add(dr["y"].ToString() + "-" + dr["d"].ToString() + "-" + dr["m"].ToString());
            no.Add(dr["bno"].ToString());
        }
        con.Close();

        foreach (var a in date)
        {
            Console.WriteLine("Inserting: " + date[i] + " With " + no[i]);
            SqlCommand cmd2 = new SqlCommand("update bill set orderdate = '" + date[i] + "' where bno = " + no[i], con);
            con.Open();
            cmd2.ExecuteNonQuery();
            con.Close();
            i++;
        }
        Console.WriteLine("Order date changing completed \n\n");

感谢您与我们分享宝贵的时间感谢朋友们

您必须告诉我们您使用的是哪种RDBMS,因为日期函数变化很大。我提到了MSSQL 2008 R2所涉及的列的数据类型是什么?请注意,日期存储在数据库中,没有格式。数据库只知道默认格式,并在接受日期或输出日期时应用该格式。您的数据库似乎设置为dd/mm/yyyy格式。您可能需要更改它。实际上,现在数据库格式是yyyy/dd/mm。我不能改变每一行,所以我要问的是,是否有任何方法可以简化这一点。如果字段是datetime值,这将使情况变得更糟。日期没有格式。通过将日期转换为字符串并隐式地将其存储回date字段,您可以将相同的值放回原处,或者将日期和月份交换为所有RowsDate不具有格式的日期。您使用的格式不是固定格式,因此可能会损坏所有值。强制将日期转换为某个字符串,然后使用未指定的格式(实际上是数据库排序规则定义的格式)将其转换回日期。