9

我正在尝试从 to 填充数据table1table2两者的列数相同。

中的所有列table1都是 type varchar。中的列table2可以是varcharintdatetime等。

我的问题是如何在填充期间进行转换?

这是我编写的示例查询。我错过了进行转换的部分。我的格式datetime也是mm/dd/yyyy hh:mm:ss.

insert into table2
    select s.acty_id, s.notes_datetime, s.notes_data
    from table1 t right join table2 s 
    on (t.acty_id =s.acty_id and t.notes_datetime =s.notes_datetime)
    where t.acty_id is null
4

2 回答 2

14

您将在您的领域使用CAST()or :CONVERT()

Declare @dt varchar(20)
set @dt = '08-12-2012 10:15:10'
select convert(datetime, @dt, 101)

对于您的查询,您将执行以下操作:

insert into table2
select s.acty_id, s.notes_datetime, s.notes_data
from table1 t 
right join table2 s 
    on t.acty_id =s.acty_id 
    and convert(datetime, t.notes_datetime, 101) = s.notes_datetime
where t.acty_id is null
于 2012-08-23T20:02:57.163 回答
5

正确的答案是更正 table1 以便它使用正确的数据类型。同时,假设您需要同时匹配日期和时间,您可以试试这个:

and CONVERT(DATETIME, t.notes_datetime, 101) = s.notes_datetime
于 2012-08-23T20:05:18.337 回答