从插入的字符串转换datetime来设置@sql ='...'

时间:2011-01-17 20:19:57

标签: sql-server-2005 insert set

我在microsoft sql server 05中有一个程序,他的工作是接听电话并根据用户ID将其发送到其他数据库。我无法正确发送日期时间(生日)。这是一个缩写的代码段...

ALTER procedure   [dbo].[spAddCustomer]  
@ID as integer = 125, @databaseID as integer = 40, @name as varchar = 'd k', @birth_date as datetime = '2011/01/17 08:28:01'  
as  
--get database by @ID of user  
SELECT @DataBaseName=t.DataBaseName  
  FROM [List].[dbo].[users] U 
  inner join tblList t on t.ID=U.[DataBaseID]
  where U.USERID=@ID  
--do insert into appropriate database  
Declare @sql as varchar(8000)  
Set @sql='  
   INSERT INTO ['+@DataBaseName+'].dbo.[customer]  
        (   [Name], [Birth Date]   )  
   value ( '''+@name+''','''+@birth_date+''');  
        '  
print @sql  
exec(@sql)  
update customer set DateProcessed=getDate() where ID=@ID'  

我尝试使用'''+convert(datetime,@birth_date,120)+'''它不起作用 我如何让这个工作正常?
谢谢你能给予的任何帮助!
戴夫k。

1 个答案:

答案 0 :(得分:1)

  

我尝试过使用过   '''+ convert(datetime,@ birth_date,120)+'''它不起作用。

试试这个:

'''+convert(VarChar(20),@birth_date,120)+'''

基本上,您构建的是一个在不同数据库上执行的字符串。 @birth_date是一个日期时间,因此您需要先将其转换为字符串。