Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur lors de la conversion de dbtype_dbdate en date

j'espère que cela vous aidera (je n'utilise pas SQL Server 2012).
si votre ODBC est lié à db2, pour une plage de dates non prise en charge, par ex. '0001-01-01', vous devez lancer. Normalement, cela fonctionne.

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

Si vous voulez toujours que le résultat soit une date, utilisez simplement CASE et remplacez la date invalide par votre date par défaut, par exemple

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

Vous devrez peut-être changer CURRENT_DATE en CURRENT_TIMESTAMP et la composition de CASE dépend de votre serveur de base de données et de vos besoins