2011-01-17 12 views
1

私はMicrosoft SQL Server 2005のプロシージャを持っています。それを呼び出すのは、ユーザーIDに基づいて他のデータベースに送信することです。私は日時(誕生日)が正しく送られることができません。ここでは省略コードセグメント...挿入時に文字列からdatetimeを変換する@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]' 

は、私はそれが動作しません'''+convert(datetime,@birth_date,120)+'''を使用して試してみたのです。
これを正しく機能させるにはどうすればよいですか?
お寄せいただきありがとうございます!
dave k。

答えて

1

私は を変換しようとしましたが、 'convert'(datetime、@ birth_date、120)+ '' 'は動作しません。

これを試してみてください:

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

基本的に、あなたはあなたが別のデータベース上で実行した文字列を構築しています。 @birth_dateは日付時刻なので、最初に文字列に変換する必要があります。

+0

"[生年月日]は、挿入しているデータベースのdatetime型であり、変更できません"という回答がすぐに却下されました。それをテストすることに決めました。それはそれを好むように見えます。私は今より少し大きい仕事をしなければなりません、なぜなら、それは私が現在提示しているものよりはるかに大きいスクリプトですが、私はそれが動作することを確認できるとすぐに答えとしてあなたをマークするでしょう!ありがとう! –

関連する問題