SQL在日期时间字段周围放置两个单引号并且无法插入记录

标签 sql sql-server-2005 datetime double-quotes

我正在尝试插入 SQL 数据库表,但它不起作用。因此,我使用 SQL Server Profiler 来查看它是如何构建查询的;它显示的内容如下:

declare @p1 int
set @p1=0
declare @p2 int
set @p2=0
declare @p3 int
set @p3=1
exec InsertProcedureName @ConsumerMovingDetailID=@p1 output, @UniqueID=@p2 output, 
                         @ServiceID=@p3 output, @ProjectID=N'0', @IPAddress=N'66.229.112.168', 
                         @FirstName=N'Mike', @LastName=N'P', @Email=N'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9bf6e2f6faf2f7dbe2faf3f4f4b5f8f4f6" rel="noreferrer noopener nofollow">[email protected]</a>', 
                         @PhoneNumber=N'(254)637-1256', @MobilePhone=NULL, @CurrentAddress=N'', 
                         @FromZip=N'10005', @MoveInAddress=N'', @ToZip=N'33067', 
                         @MovingSize=N'1', @MovingDate=''2009-04-30 00:00:00:000'', 
                               /*        Problem here  ^^^  */
                         @IsMovingVehicle=0, @IsPackingRequired=0, @IncludeInSaveologyPlanner=1
select @p1, @p2, @p3

如您所见,它在日期时间字段周围放置了双引号两对单引号,因此会在 SQL 中产生语法错误。 我想知道是否有什么我必须配置的地方?

如有任何帮助,我们将不胜感激。

这是环境详细信息:

  • Visual Studio 2008
  • .NET 3.5
  • MS SQL Server 2005

这是我正在使用的 .NET 代码......

//call procedure for results
strStoredProcedureName = "usp_SMMoverSearchResult_SELECT";

Database database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = database.GetStoredProcCommand(strStoredProcedureName);
dbCommand.CommandTimeout = DataHelper.CONNECTION_TIMEOUT;

database.AddInParameter(dbCommand, "@MovingDetailID", DbType.String, objPropConsumer.ConsumerMovingDetailID);
database.AddInParameter(dbCommand, "@FromZip", DbType.String, objPropConsumer.FromZipCode);
database.AddInParameter(dbCommand, "@ToZip", DbType.String, objPropConsumer.ToZipCode);
database.AddInParameter(dbCommand, "@MovingDate", DbType.DateTime, objPropConsumer.MoveDate);
database.AddInParameter(dbCommand, "@PLServiceID", DbType.Int32, objPropConsumer.ServiceID);
database.AddInParameter(dbCommand, "@FromAreaCode", DbType.String, pFromAreaCode);
database.AddInParameter(dbCommand, "@FromState", DbType.String, pFromState);
database.AddInParameter(dbCommand, "@ToAreaCode", DbType.String, pToAreaCode);
database.AddInParameter(dbCommand, "@ToState", DbType.String, pToState);

DataSet dstSearchResult = new DataSet("MoverSearchResult");
database.LoadDataSet(dbCommand, dstSearchResult, new string[] { "MoverSearchResult" });

最佳答案

我怀疑您正在向日期时间字段添加单引号,并将其作为字符串发送?不要那样做。使用日期时间类型作为参数,并且不要添加任何引号。

如果您向我们展示代码的 .Net 部分,将会有所帮助。

关于SQL在日期时间字段周围放置两个单引号并且无法插入记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782117/

相关文章:

python - 如何编写查询以从关系中获取 sqlalchemy 对象?

sql - TSQL SELECT先前日期的记录

在 SQL Server 中插入日期时间的 SQL 查询

php - 回显 <<<_END 不工作

MySQL 在同一个表中加入两个查询

mysql - 一次调用多个 mysql 存储过程

sql-server - 键值对 XML (SQL Server 2005)

sql - 如何转义字段名称方括号内的方括号

c# - 在 C# 中获取冬季时间

java - 从当前日期开始以秒为单位获取日期时间