【问题标题】:Insert datetime from asp.net to sql server将日期时间从 asp.net 插入到 sql server
【发布时间】:2013-03-28 17:14:08
【问题描述】:

我有问题。我需要将DateTime 从 ASP.NET 插入 SQL。我有一个用于插入日期的日历和两个DropDownlist。一个小时,另一个分钟。我不知道如何一次从日历和时间(小时和分钟)中插入日期。此代码仅插入日期。例如28.3.2013 0:00:00

cmd.CommandText = "insert into Milniky ( datetime ) values ('" + CalendarDz.SelectedDate + DropDownListHz + DropDownListMz +"')";

【问题讨论】:

  • 您是否调试过 101 并打印出命令以查看它试图发送到 SQL Server 的内容?你能给我们看看吗?
  • 对 SQL 查询不应该通过这样的字符串连接构建这一事实感到震惊......构建后查询的实际字符串值是多少?我们无法从此处查看 DropDownListMz 之类的运行时值。
  • 一般来说,使用潜在的保留关键字作为数据库中的列名也不是一个好主意。您可以通过将其包含在方括号 ([datetime]) 中来明确地将其定义为对象名称,但无论如何最好避免使用该名称。毕竟,这个名字甚至没有传达它代表什么,只有它所拥有的数据类型。

标签: asp.net sql sql-server datetime


【解决方案1】:

您应该考虑在插入时创建DateTime 对象和参数以防止出现错误数据。

int hour = int.Parse(DropDownListHz.SelectedValue);
int minute = int.Parse(DropDownListMz.SelectedValue);
DateTime dt = CalendarDz.SelectedDate;
dt.AddHours(hour);
dt.AddMinutes(minutes);
cmd.CommandText = "insert into Milniky ( datetime ) values (@dt)";
cmd.Parameters.Add(new SqlParameter("@dt", dt.ToString("yyyy-MM-dd HH:mm:ss")));

您可能还想使用DateTime.TryParse(s) 来提供更好的用户体验

但是在您的特定命令中,我怀疑您需要在语句中添加空格和冒号以连接日期。

目前您的命令看起来像是在创建类似2013-3-28130 的东西,而您想要的是类似2013-3-28 1:30 的东西。

cmd.CommandText = "insert into Milniky ( datetime ) values ('" + CalendarDz.SelectedDate.ToString("MM/dd/yyyy") + " " + DropDownListHz + ":" + DropDownListMz +"')";

【讨论】:

  • Debug write s "1. 3. 2013 0:00:00 18:20" 字符串
  • CalendarDz.SelectedDate 更改为CalendarDz.SelectedDate.ToString("yyyy-MM-dd")。我已经更新了答案。
  • 我不知道这是什么,但是当我插入 ("yyyy-MM-dd") 并选择大于 12 的天时,我收到一条消息“nvarchar 数据类型的转换为日期时间数据类型导致超出范围的值。语句已终止。但是,如果我将 mounth 更改为一天(“yyyy-dd-MM”)并选择大于 12 的日期,则消息是“字符串未被识别为有效的 DateTime 类型。”
  • 改成MM/dd/yyyy试试看
  • 没有工作“字符串未被识别为有效的 DateTime 类型。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多