spero che questo aiuti (non sto usando SQL Server 2012).
se il tuo ODBC si collega a db2, per l'intervallo di date non supportato, ad es. '0001-01-01', devi eseguire il cast. Normalmente funziona.
SELECT *
FROM OPENQUERY(LINKEDSERVERNAME, 'SELECT Product,
CAST(DateLastReceipt AS CHAR(10))
FROM ProductTable')
Se vuoi ancora il risultato come data, usa CASE e sostituisci la data non valida con la tua data predefinita, ad es.
SELECT *
FROM OPENQUERY(LINKEDSERVERNAME, 'SELECT Product,
,CASE WHEN DateLastReceipt AS CHAR(10)) = ''0001-01-01''
THEN CURRENT_DATE
ELSE DateLastReceipt
END
FROM ProductTable')
Potrebbe essere necessario modificare CURRENT_DATE in CURRENT_TIMESTAMP e la composizione CASE dipende dal tuo server db e dalle tue esigenze