如何从sql动态查询中将值插入列中 [英] How to insert value into column from sql Dynamic query
本文介绍了如何从sql动态查询中将值插入列中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Table1(userid varchar(10),dt DateTime)
我想插入这样的行
I have a Table1(userid varchar(10),dt DateTime)
I want to insert row like this
declare @userId varchar(10)
declare @sql varchar(100)
declare @datetime varchar(10)
set @userId =2
set @datetime ='14/05/2015';
set @sql='insert into Table1('+'UserId'+','+'dt'+')'+ '
values('+@userId+','+''''+@datetime+'''' +')'
EXEC sp_executesql @sql
错误是
将char数据类型转换为日期时间数据类型会导致日期时间值超出范围
Error is
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value
推荐答案
您的动态查询看起来没问题但是之间的转换varchar
数据类型为datetime
数据类型失败,因为SQL Server使用不同的dateformat
。
请参阅: SET DATEFORMAT(指令) [ ^ ]
Your dynamic query looks OK, but conversion betweenvarchar
data type todatetime
data type failed, becuase the SQL Server uses differentdateformat
.
See: SET DATEFORMAT (instruction)[^]
declare @datetime varchar(10)
set @datetime ='14/05/2015'
SET DATEFORMAT dmy;
SELECT CONVERT(DATETIME, @datetime) AS MyDate
现在,您应该能够添加daata。
建议更正您的查询代码:
Now, you should be able to add daata.
Suggested correction for your query code:
declare @userId varchar(10)
declare @sql varchar(100)
declare @datetime varchar(10)
set @userId =2
set @datetime ='14/05/2015';
set @sql= 'SET DATEFORMAT dmy;' +
'insert into Table1(UserId, dt)'+
'values(' + @userId + ',''' + @datetime + ''')'
EXEC sp_executesql @sql
这篇关于如何从sql动态查询中将值插入列中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文