Terkadang Anda perlu melakukan sedikit pekerjaan ekstra saat mengintegrasikan dua program DBMS yang berbeda. Berikut adalah solusi yang kami gunakan untuk membantu pelanggan yang mengalami masalah saat mencoba mengintegrasikan SQL Server dengan MySQL.
Pelanggan mendapatkan kesalahan berikut di SQL Server saat bekerja dengan kolom MySQL TIMESTAMP.
select * from openquery(MYSQL, 'select lastupdated from carriers') Error converting data type DBTYPE_DBTIMESTAMP to datetime2.
Alasan mendasar untuk ini adalah bahwa dalam database MySQL pelanggan, nilai DATE, DATETIME, atau TIMESTAMP yang tidak valid secara otomatis dikonversi ke nol (yaitu '0000-00-00' atau '0000-00-00 00:00:00') . Bulan atau hari nol bukanlah kombinasi tanggal atau waktu yang valid di SQL Server. Untuk mengatasinya, pertama-tama kita mengonversi kolom yang kembali dari MySQL menjadi char (20):
select * from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as lastupdated from carriers')
Nilai kolom '0000-00-0000:00:00' kemudian diubah menjadi NULL:
select case lastupdated when '0000-00-00 00:00:00' then null else lastupdated end as lastupdated from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as lastupdated from carriers')
Terakhir, untuk mengembalikan kolom "lastupdated" ke datetime2, kami menjalankan:
select cast(x.lastupdated as datetime2) as lastupdated from ( select case lastupdated when '0000-00-00 00:00:00' then null else lastupdated end as lastupdated from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as lastupdated from carriers limit 100') ) x