错误sql:将varchar数据类型转换为日期时间数据类型会导致超出范围的值

时间:2014-05-18 13:04:20

标签: c# mysql asp.net sql datetime

我尝试使用以下代码输入当天的日期:

string now = (DateTime.Today.Day + "/" + DateTime.Today.Month + "/" + DateTime.Today.Year).ToString();
string tm = (DateTime.Today.Hour + ":" + DateTime.Today.Minute).ToString();
string sql2 = string.Format("INSERT INTO Kabala2 (Nu_kabala,Ma_num,Sk,Seif_hacnasa,Seif_name,Date) VALUES('{0}','{1}','{2}','{3}','{4}','{5}')", n, Session["Ma_num"], lprice, lkod,des, now );
Dal.DoQuery(sql2);

当我运行此代码时,它会向我显示标题中的错误:

  

导致将varchar数据类型转换为日期时间数据类型   在超出范围的值

我该如何解决?

------------------修改

我将其更改为:string now = DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss");并且有效。

现在我还有另一个问题,当我运行下面的代码时,它显示错误:将数据类型varchar转换为数字时出错。

string now = DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss");
    string tm = DateTime.Now.ToString("HH:mm:ss");
    string sql = string.Format("INSERT INTO Kabala1 (Nu_kabala,Ma_num,Date,Time,Total,Status,Name,User_n) VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", n, Session["Ma_num"], now, tm, lprice, "ddffs", Session["user"], "ddffs");
    Dal.DoQuery(sql);
    string sql2 = string.Format("INSERT INTO Kabala2 (Nu_kabala,Ma_num,Sk,Seif_hacnasa,Seif_name,Date) VALUES('{0}','{1}','{2}','{3}','{4}','{5}')", n, Session["Ma_num"], lprice, lkod, des, now);
    Dal.DoQuery(sql2);
    string sql3 = string.Format("INSERT INTO Kabala3 ((Nu_kabala,Msd,Ma_num,Kind_pay,Name_pay,Date_pay,Sk,Ms_sek,Snif,Bank,Date_klita,Seif) VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}')", n,"1", Session["Ma_num"],"13", "ddffds", now, lprice, this.card.Text, this.mm.Text, this.yy.Text, now, lkod);
    Dal.DoQuery(sql3);

3 个答案:

答案 0 :(得分:2)

您可以使用DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss") //无论格式是什么......

或使用直接sql而不是使用CONVERT方法。语法是

  

在您的情况下,使用103格式的日期

CONVERT(VARCHAR,DateTime.Today.Day + "/" + DateTime.Today.Month + "/" + DateTime.Today.Year,103)
  

和108的时间

CONVERT(VARCHAR, DateTime.Today.Hour + ":" + DateTime.Today.Minute + ":00" ,108)

应该给出hh:mm:ss

的格式

以下w3链接的完整参考: http://www.w3schools.com/sql/func_convert.asp

答案 1 :(得分:1)

MySQL中日期的标准格式是YYYY-MM-DD。我建议使用这种格式。也许这会以正确的格式创建字符串:

string now = (DateTime.Today.Year + "-" + DateTime.Today.Month + "-" + DateTime.Today.Year).ToString();

答案 2 :(得分:-1)

只需更改计算机或计算机中的日期设置即可。我希望你知道它是如何完成的! 如果你不......

  1. 从右下角选择您的日历。
  2. 然后选择change date and time settings
  3. 然后选择change date and time
  4. 然后选择change calendar settings
  5. 然后以日期格式>将短日期更改为MM/dd/yyyydd/MM/yyyy。选择适合您的计算机的产品。对我来说是MM/dd/yyyy