Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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/7/sql-server/26.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#_Sql Server - Fatal编程技术网

C# 错误:在执行插入时从字符串转换日期和/或时间时,转换失败

C# 错误:在执行插入时从字符串转换日期和/或时间时,转换失败,c#,sql-server,C#,Sql Server,我试图从本地数据库中选取一些现有值,并将其推送到实时数据库中。代码运行良好,现在在部署之前,我面临这个问题。请给我解答 SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("Select OPTION_V_DATE, OPTION_V_ER, COMMON_SND, COMMON_SCD, COMMON_OAD, NOTIFY_ID, CREATEDATE, MODIFYDATE, [USER_ID], SMART_EXTRACT, CATEGO

我试图从本地数据库中选取一些现有值,并将其推送到实时数据库中。代码运行良好,现在在部署之前,我面临这个问题。请给我解答

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("Select OPTION_V_DATE, OPTION_V_ER, COMMON_SND, COMMON_SCD, COMMON_OAD, NOTIFY_ID, CREATEDATE, MODIFYDATE, [USER_ID], SMART_EXTRACT, CATEGORY_NUM From REVIEW_NJ_OPTION_5_INFO Order By ID DESC", Cn);
                SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(sqlDataAdapter);
                DataSet selectResults = new DataSet();
                sqlDataAdapter.Fill(selectResults); // get dataset                    

                foreach (DataRow row in selectResults.Tables[0].Rows)
                {
                    using (SqlConnection Con = new SqlConnection(@".."))
                    {
                        Con.Open();

                        SqlCommand RD = new SqlCommand("Insert Into NJ_OPTION_5_INFO (OPTION_V_DATE, OPTION_V_ER, COMMON_SND, COMMON_SCD, COMMON_OAD, NOTIFY_ID, CREATEDATE, MODIFYDATE, [USER_ID], SMART_EXTRACT, CATEGORY_NUM)Values('" + row["OPTION_V_DATE"].ToString() + "', '" + row["OPTION_V_ER"].ToString() + "', '" + row["COMMON_SND"].ToString() + "', '" + row["COMMON_SCD"].ToString() + "', '" + row["COMMON_OAD"].ToString() + "', '" + row["NOTIFY_ID"].ToString() + "', '" + row["CREATEDATE"].ToString() + "', '" + row["MODIFYDATE"].ToString() + "', '" + row["USER_ID"].ToString() + "', '" + row["SMART_EXTRACT"].ToString() + "', '" + row["CATEGORY_NUM"].ToString() + "')", Con);
                        RD.ExecuteNonQuery();

                        Con.Close();
                    }
                }

这是因为两个数据库的日期和时间格式不同。如果您是以DateTime格式获取日期,则将其以DateTime格式发送到第二个数据库,即代替
行[“OPTION\u V\u date”]。ToString()

你需要写:

Convert.ToDateTime(row["OPTION_V_DATE"])
如果要从第一个数据库中以字符串形式获取日期,则需要将特定字符串转换为DateTime格式或配置第二个数据库的格式化DateTime字符串。假设您将日期设置为字符串形式的
dd-MM-yyyy
格式,并且您的第二个数据库配置为
yyy-MM-dd
格式,那么您可以这样做:

 DateTime dt = DateTime.ParseExact(row["OPTION_V_DATE"].ToString(), "dd'-'MM'-'yyyy", CultureInfo.InvariantCulture);
 string ss = dt.ToString("yyyy'-'MM'-'dd");

现在,您希望发送哪一个-您可以发送
dt
ss
。这两种方法都可以使用。

我对列选项使用Datatype Date,对CREATEDATE和MODIFYDATE使用Date和DateTime。首先,您确实应该使用参数来避免潜在的sql注入。其次,您需要将要放入查询中的数据包括在内,特别是
行[“OPTION_V_DATE”]、
行[“CREATEDATE”]、
行[“CREATEDATE”]、
行[“MODIFYDATE”]和
行[“MODIFYDATE”]的值是什么。ToString()=“2015-09-18 20:29:47.000”,行[“CREATEDATE”]。ToString()='2015-09-18 20:29:47.000'您能否发布失败的sql命令生成的sql字符串?或者,您可以运行sql探查器捕获相关记录以进行分析。@Kar:CREATEDATE='2015-09-18 20:29:47.000'和MODIFYDATE='2015-09-18 20:29:47.000'label2.Text=DateTime.Now.ToString(“yyyy-MM-dd HH:MM:ss”);和Datepick.Text=dateTimePicker1.Value.Date.ToString(“yyyy-MM-dd”);我像这样选择日期和日期时间。是的,我会试试看。很多人不知道这两个数据库的格式。。。我有一个yyyy-MM-dd的例子。但是你需要先为两个数据库选择datetime格式,最好不要转换成字符串。您需要像convert.ToDatetime(行[“option_v_date”])一样转换db1的值,并在第二个数据库中存储相同的datetime格式在我插入第二个数据库时出现问题。Convert.ToDateTime(行[“OPTION\u V\u DATE”])无法帮助。还有其他线索吗。昨天天气很好。问题是从今天早上的“+row[“CREATEDATE”]”开始出现的。ToString()+“”任何替代方法,我都想尽一切办法,在这上面浪费了一整天的时间