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

Lỗi khi chuyển đổi dbtype_dbdate thành ngày

hy vọng điều này sẽ hữu ích (tôi không sử dụng SQL Server 2012).
nếu ODBC của bạn liên kết đến db2, cho phạm vi ngày không được hỗ trợ, ví dụ:'0001-01-01', bạn cần truyền. Thông thường điều này hoạt động.

SELECT * 
FROM   OPENQUERY(LINKEDSERVERNAME, 'SELECT Product, 
                                       CAST(DateLastReceipt AS CHAR(10))
                                FROM   ProductTable')

Nếu bạn vẫn muốn kết quả là ngày, chỉ cần sử dụng CASE và thay thế ngày không hợp lệ thành ngày mặc định của bạn. Ví dụ:

SELECT *
FROM   OPENQUERY(LINKEDSERVERNAME, 'SELECT Product, 
                               ,CASE WHEN DateLastReceipt AS CHAR(10)) = ''0001-01-01''
                                       THEN CURRENT_DATE
                                     ELSE DateLastReceipt 
                                     END
                                FROM   ProductTable')

Bạn có thể cần thay đổi CURRENT_DATE thành CURRENT_TIMESTAMP và thành phần CASE phụ thuộc vào máy chủ db và yêu cầu của bạn




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lựa chọn và định cấu hình phần cứng cho SQL Server 2016 Standard Edition

  2. DateDiff của 2 ngày trong cùng một cột SQL

  3. SQL:Loại bỏ các bản sao

  4. Lệnh Sql JOIN có ảnh hưởng đến hiệu suất không?

  5. Làm thế nào để đặt kết quả của thủ tục được lưu trữ thực thi thành một biến?