将数据类型varchar转换为datetime时出错 [英] Error converting datatype varchar to datetime

查看:135
本文介绍了将数据类型varchar转换为datetime时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,在我的项目中遇到错误:



将数据类型varchar转换为datetime时出错



在我的表中,在逻辑中和SP中,DOB和DOA被声明为datetime。

而不是放dob.text,我试过,dob.ToString(),它也不起作用。我也试过pd.doa = datetime.parse ......它也出错了。



如何解决这个错误。







这是我的代码

hello in my project am getting an error that:

Error converting datatype varchar to datetime"

in my table, in logic and in SP the DOB and DOA are declared as datetime.
instead of putting dob.text , i have tried,dob.ToString(),it is also not working. and also i have tried pd.doa=datetime.parse...it is also getting error.

How to solve this error.



Here is my code

                            pd.FName = txtFname.Text;
                            pd.MName = txtMName.Text;
                            pd.LName = txtLName.Text;
                            pd.DOB = Convert.ToDateTime(dtpdob.Text);


                            int year1 = dtpdob.Value.Year;
                            int year2 = DateTime.Now.Year;

                            if ((year1 == year2) | (year2 < year1))
                            {
                                CommonFunctions.Error("Please Enter a valid Date of Birth!!!");
                                dtpdob.Focus();
                                return;
                            }

                            int NewAge = year2 - year1;

                            pd.SID = Convert.ToInt16(txtsid.Text);
                            pd.Sex = cmbSex.SelectedItem.ToString();
                            lblage.Text = NewAge.ToString();
                            pd.Age = NewAge;
                            pd.Address = txtAddress1.Text;
                            pd.SPName = cmbSponser.SelectedItem.ToString();

                            pd.FathName = txtFathName.Text;
                            pd.MothName = txtMothName.Text;
                            pd.MothOccu = txtMothoccu.Text;
                            pd.FathOccu = txtfathOccu.Text;
                            pd.Fam1 = txtFam1.Text;
                            pd.Fam2 = txtFam2.Text;
                            pd.Fam3 = txtFam3.Text;
                            pd.Fam4 = txtFam4.Text;
                            pd.Fam5 = txtFam5.Text;
                            pd.Fam6 = txtFam6.Text;
                            pd.Fam7 = txtFam7.Text;
                            pd.Fam8 = txtFam8.Text;


                            pd.FamCond = txtcond.Text;
                            pd.FamNotes = txtnotes.Text;
                            pd.Status = txtstatus.Text;
                            pd.DOA = Convert.ToDateTime(doa.Text);


                            pd.EntryDate = Convert.ToDateTime(DateTime.Now.ToString());

public static bool Update(PersonelData person)
     {
         const string UpdateDetails = "exec[UPDATE_BULK_INFO]@sid,@FName,@MName,@LName,@DOB,@sex,@age,@address,@SponserName,@DOA,@FathName,@FathOccu,@MothName,@MothOccu,@Fam1,@Fam2,@Fam3,@Fam4,@Fam5,@Fam6,@Fam7,@Fam8,@FamCond,@FamNotes,@Status";

         DAL.Method method = new DAL.SqlDataBase();
         method.SelectQuery(UpdateDetails);
         
         method.AddParameter("@sid", person.SID);
         method.AddParameter("@FName", person.FName);
         method.AddParameter("@MName", person.MName);
         method.AddParameter("@LName", person.LName);
         method.AddParameter("@DOB", person.DOB);
         method.AddParameter("@sex", person.Sex);
         method.AddParameter("@age", person.Age);
         method.AddParameter("@address", person.Address);
         method.AddParameter("@SponserName", person.SPName);
         method.AddParameter("@DOA", person.DOA);
         method.AddParameter("@FathName", person.FathName);
         method.AddParameter("@FathOccu", person.FathOccu);
         method.AddParameter("@MothName", person.MothName);
         method.AddParameter("@MothOccu", person.MothOccu);
         method.AddParameter("@Fam1", person.Fam1);
         method.AddParameter("@Fam2", person.Fam2);
         method.AddParameter("@Fam3", person.Fam3);
         method.AddParameter("@Fam4", person.Fam4);
         method.AddParameter("@Fam5", person.Fam5);
         method.AddParameter("@Fam6", person.Fam6);
         method.AddParameter("@Fam7", person.Fam7);
         method.AddParameter("@Fam8", person.Fam8);
         method.AddParameter("@FamCond", person.FamCond);
         method.AddParameter("@FamNotes", person.FamNotes);
         method.AddParameter("@Status", person.Status);
         //method.AddParameter("@EntryDate", person.EntryDate);

         int ins = method.ExecuteQuery();

         if (ins > 0)
         {
             return true;
         }

         return false;
     }

推荐答案

这个问题反映了当今初学者最大的谬误之一:使用字符串代表的趋势数据而不是数据本身。如果您有一些与日期/时间相关的数据,请不要使用 varchar ;使用某些数据类型,如 date datetime 等:

http://technet.microsoft.com/en-us/library/ms187594%28v= sql.90%29.aspx [ ^ ],

http://technet.microsoft.com/en-us/library/ms180878%28v=sql.90%29.aspx [ ^ ]。



-SA
This question reflects one of the biggest fallacies of the beginners these days: a trend to work with strings representing data instead of data itself. If you have some data related to date/time, never use varchar; use some data type like date, datetime, etc.:
http://technet.microsoft.com/en-us/library/ms187594%28v=sql.90%29.aspx[^],
http://technet.microsoft.com/en-us/library/ms180878%28v=sql.90%29.aspx[^].

—SA


这篇关于将数据类型varchar转换为datetime时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆