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