【问题标题】:Insert into database date with another format以另一种格式插入数据库日期
【发布时间】:2012-06-15 07:48:00
【问题描述】:

我有一个 gridview 和 sqldatasource。

我正在尝试在数据库中插入新记录,并且 Date 列类型是 Date 并且默认格式是 US , mm/dd/yyyy 我正在尝试使用另一种格式插入日期。

  SqlDataSource2.InsertCommand = "Insert into test (Name,Date) VALUES (@Name,@CONVERT(Date,'@Date',104))";
        SqlDataSource2.InsertParameters.Add("Name", nameText);
        SqlDataSource2.InsertParameters.Add("Date", DbType.DateTime, date.Text);

我得到:字符串未被识别为有效的日期时间。

谢谢

【问题讨论】:

  • date(和 datetimedatetime2 等)列没有具有格式。他们只存储日期(和时间)。将字符串转换为DateTime,然后再将其添加为参数,然后让ADO.NET 和SQL Server 处理。
  • 是的..我这样做了,但 insertt 不接受日期时间值,我需要将其转换为字符串并添加吗?
  • ,您要避免将其视为字符串。
  • 'System.Web.UI.WebControls.ParameterCollection.Add(string, System.Data.DbType, string)' 的最佳重载方法匹配有一些无效参数
  • date.Text 建议您尝试给它一个字符串,而不是日期时间。

标签: c# asp.net sql


【解决方案1】:

数据库中格式不可知的日期类型(除非您将其存储为字符串)。

您可以先尝试使用DateTime.ParseExactDateTime.Parse 获取有效的System.DateTime 对象。

然后,使用该值设置 SqlParameter。

DateTime dateValue = DateTime.Parse(date.Text); // try to make this working first.
SqlDataSource2.InsertCommand= "Insert into test (Name,Date) VALUES (@Name,@Date)";
    SqlDataSource2.InsertParameters.Add("Name", nameText);
    SqlDataSource2.InsertParameters.Add("Date", DbType.DateTime, dateValue);

【讨论】:

  • 我的坏事...我使用 Selectcommand 而不是 Insert 命令:D
  • 在应用程序级别准备正确对象类型的建议仍然有效。它将更易于维护,并让 db 驱动程序完成它的构建。
【解决方案2】:

首先你应该使用DateTime对象而不是Date.Text,首先将你的文本转换成DateTime

其次,如果数据类型是 SQLServer 表中的数据时间,则在插入时不需要格式化日期时间,只需使用。

"Insert into test (Name,Date) VALUES (@Name, @Date)";   

您应该在select 中检索数据时格式化日期时间

【讨论】:

  • 是的,但它不会插入例如 30/02/2012,因为它只允许 mm/dd/yyyy
猜你喜欢
  • 2015-08-11
  • 2018-07-13
  • 2017-08-27
  • 2011-11-23
相关资源
最近更新 更多