Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro ao converter dbtype_dbdate para data


espero que isso ajude (não estou usando o SQL Server 2012).
se seu ODBC estiver vinculado ao db2, para intervalo de datas não suportado, por exemplo '0001-01-01', você precisa lançar. Normalmente isso funciona.
SELECT * 
FROM   OPENQUERY(LINKEDSERVERNAME, 'SELECT Product, 
                                       CAST(DateLastReceipt AS CHAR(10))
                                FROM   ProductTable')

Se você ainda quiser o resultado como data, basta usar CASE e substituir a data inválida pela sua data padrão, por exemplo.
SELECT *
FROM   OPENQUERY(LINKEDSERVERNAME, 'SELECT Product, 
                               ,CASE WHEN DateLastReceipt AS CHAR(10)) = ''0001-01-01''
                                       THEN CURRENT_DATE
                                     ELSE DateLastReceipt 
                                     END
                                FROM   ProductTable')

Pode ser necessário alterar CURRENT_DATE para CURRENT_TIMESTAMP e a composição de CASE depende do seu servidor de banco de dados e de seus requisitos