Próbuję wypełnić dane z table1
na table2
, obie mają taką samą liczbę kolumn.Jak przekonwertować varchar na datetime w T-SQL?
Wszystkie kolumny w table1
są typu varchar
. Kolumny w table2
może być varchar
, int
lub datetime
itp
Moje pytanie brzmi, jak to zrobić konwersję podczas wypełniania?
To jest przykładowe zapytanie, które napisałem. Tęsknię za tą częścią, aby dokonać konwersji. Również format mojego datetime
to 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
Niestety, nie widzi swoją edycję, ale kilka rzeczy: tabela1 gdzie istnieje varchar, nie Tabela 2, i musisz wykonać * bezpieczne * rzutowanie, więc powinieneś używać konwertowania ze stylem, który pasuje do formatu ciągu (m/d/r), abyś nie miał problemów z systemem w języku angielskim innym niż amerykański lub z innymi ustawienia sesji. –
@AaronBertrand Złapałem varchar w tabeli1 i zredagowałem, aby poprawić ten błąd. Zbyt dużo table1, table2's. Masz rację co do prawidłowego formatu konwersji ... jak zawsze – Taryn
Nie jestem pewien, czy rozumiem pierwszą część. możesz wytłumaczyć? Czy to zadziała? wstawić tabeli2 wybrać s.acty_id, konwersja (DateTime s.notes_datetime, s.notes_data, 101), z s.notes_data Tabela1 t prawo przyłączenia Tabela 2 e \t na t.acty_id = s.acty_id \t i konwersji (datetime, t.notes_datetime, 101) = s.notes_datetime gdzie t.acty_id ma wartość null – GLP