Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm việc với các cột TIMESTAMP của MySQL trong SQL Server

Đôi khi bạn cần phải thực hiện thêm một chút công việc khi tích hợp hai chương trình DBMS khác nhau. Đây là một giải pháp mà chúng tôi đã sử dụng để trợ giúp một khách hàng đang gặp sự cố khi cố gắng tích hợp SQL Server với MySQL.

Khách hàng gặp lỗi sau trong SQL Server khi làm việc với cột TIMESTAMP của MySQL.

select * from openquery(MYSQL, 'select lastupdated from carriers')
Error converting data type DBTYPE_DBTIMESTAMP to datetime2.

Lý do cơ bản cho điều này là trong cơ sở dữ liệu MySQL của khách hàng, các giá trị DATE, DATETIME hoặc TIMESTAMP không hợp lệ đã được tự động chuyển đổi thành số không (tức là '0000-00-00' hoặc '0000-00-00 00:00:00') . Tháng hoặc ngày bằng 0 không phải là kết hợp ngày hoặc giờ hợp lệ trong SQL Server. Để giải quyết vấn đề này, trước tiên chúng tôi chuyển đổi cột quay trở lại từ MySQL thành char (20):

select * from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as
lastupdated from carriers')

Giá trị của cột '0000-00-0000:00:00' sau đó được chuyển đổi thành 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')

Cuối cùng, để đưa cột "cập nhật lần cuối" trở lại datetime2, chúng tôi đã chạy:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột không xác định MySQL trong mệnh đề ON

  2. Liên kết cơ sở dữ liệu Oracle - MySQL tương đương?

  3. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Fedora 12

  4. Tự động tăng sau khi xóa trong MySQL

  5. Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/lib/mysql/mysql.sock' (2)