table1
からtable2
までのデータを入力しようとしています。どちらも同じ列数です。
table1
のすべての列のタイプはvarchar
です。 table2
の列は、varchar
、int
、またはdatetime
などです。
私の質問は、入力中に変換を行う方法ですか?
これは私が書いたサンプルクエリです。変換する部分が恋しいです。また、私の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
フィールドで CAST()
または 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
正しい答えは、正しいデータ型を使用するようにtable1を修正することです。それまでの間、日付と時刻の両方を一致させる必要があると仮定して、次のことを試すことができます。
and CONVERT(DATETIME, t.notes_datetime, 101) = s.notes_datetime