9

table1からまでのデータを入力しようとしていますがtable2、どちらも同じ数の列を持っています。

のすべての列table1はタイプvarcharです。の列はtable2varcharまたはintなどdatetimeです。

私の質問は、入力中に変換を行う方法ですか?

これは私が書いたサンプルクエリです。変換を行う部分が恋しいです。また、私のフォーマットdatetimemm/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()フィールドでorCONVERT()を使用します。

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 に答える