преобразование даты и времени из символьной строки при вставке через набор @ sql = '...' - PullRequest
1 голос
/ 17 января 2011

У меня есть процедура в Microsoft SQL Server 05, задача которой - принять вызов и отправить его в другие базы данных на основе идентификатора пользователя. я не могу отправить дату (день рождения) должным образом. вот сокращенный сегмент кода ...

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)+''', это не работает.
как мне заставить это работать правильно?
спасибо за любую помощь, которую вы можете оказать!
Дэйв К.

1 Ответ

1 голос
/ 17 января 2011

Я пытался использовать '' '+ convert (datetime, @ birth_date, 120) +' '', это не работает.

Попробуйте это:

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

По сути, вы создаете строку, которую вы выполняете в другой базе данных.@birth_date - это дата и время, поэтому сначала нужно преобразовать ее в строку.

...