Sql server 2005 通过-set@sql=';从插入时的字符串转换日期时间';

Sql server 2005 通过-set@sql=';从插入时的字符串转换日期时间';,sql-server-2005,insert,set,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:0

我在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\u date,120)+'
它不起作用。
我如何才能让它正常工作?
谢谢你能给我的帮助
戴夫k

我试过使用 ''转换(日期时间,@birth_date,120)+''它不起作用

试试这个:

'''+convert(VarChar(20),@birth_date,120)+'''
基本上,您正在构造一个在不同数据库上执行的字符串@出生日期是日期时间,因此需要先将其转换为字符串

我试过使用 ''转换(日期时间,@birth_date,120)+''它不起作用

试试这个:

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

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

我几乎马上否定了您的答案,因为“我要插入的数据库的[出生日期]是datetime类型,我无法更改它。”但我决定测试它。它似乎喜欢它。我现在必须做更多的工作,因为这是一个比我现在展示的脚本大得多的脚本,但我会确保在我确认它有效后,尽快将你标记为答案!谢谢我几乎马上就不相信你的回答,因为“对于我插入的数据库,[出生日期]是datetime类型,我无法更改它。”但我决定测试它。它似乎喜欢它。我现在必须做更多的工作,因为这是一个比我现在展示的脚本大得多的脚本,但我会确保在我确认它有效后,尽快将你标记为答案!谢谢