如何从sql动态查询中将值插入列中 [英] How to insert value into column from sql Dynamic query

查看:163
本文介绍了如何从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 between varchar data type to datetime data type failed, becuase the SQL Server uses different dateformat.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆