2011-01-17 12 views
1

나는 마이크로 소프트 SQL 서버 05에 프로 시저를 가지고 있는데, 그 사람에게 전화를 걸고 사용자 ID를 기반으로 다른 데이터베이스로 보냅니다. . 나는 datetime (생일)을 제대로 보낼 수 없다. 여기에 단축 코드 세그먼트 ... 나는 그것이 작동하지 않습니다 '''+convert(datetime,@birth_date,120)+'''를 사용하려고했습니다입력시 문자열에서 날짜 시간을 변환하는 @ sql = '...'

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 [email protected] 
--do insert into appropriate database 
Declare @sql as varchar(8000) 
Set @sql=' 
    INSERT INTO ['[email protected]+'].dbo.[customer] 
     ( [Name], [Birth Date] ) 
    value ('''[email protected]+''','''[email protected]_date+'''); 
     ' 
print @sql 
exec(@sql) 
update customer set DateProcessed=getDate() where [email protected]' 

입니다.
어떻게 제대로 작동합니까?
도움을 주셔서 감사합니다.
dave k.

답변

1

난 '(날짜는 @의 birth_date, 120) + + 변환' ''이 작동하지 않습니다 '' 를 사용하여 시도했습니다.

이 시도 :

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

을 기본적으로, 당신은 당신이 다른 데이터베이스에서 실행하는 문자열을 구성하고 있습니다. @birth_date는 날짜 시간이므로 먼저 문자열로 변환해야합니다.

+0

"[생년월일]은 내가 삽입하는 데이터베이스의 datetime 유형이므로 변경이 불가능합니다." 그러나 그것을 시험하기로 결정했다. 그것을 좋아하는 것처럼 보입니다. 지금 내가하는 일보다 훨씬 더 큰 스크립트이기 때문에 조금 더 많은 일을해야합니다. 그러나 그것이 작동하는지 확인하자마자 나는 당신을 답으로 표시 할 것입니다! 감사! –

관련 문제