надявам се това да помогне (не използвам SQL Server 2012).
ако вашият ODBC се свързва с db2, за период от време не се поддържа, напр. '0001-01-01', трябва да зададете. Обикновено това работи.
SELECT *
FROM OPENQUERY(LINKEDSERVERNAME, 'SELECT Product,
CAST(DateLastReceipt AS CHAR(10))
FROM ProductTable')
Ако все още искате резултатът като дата, просто използвайте CASE и заменете невалидната дата с датата по подразбиране, напр.
SELECT *
FROM OPENQUERY(LINKEDSERVERNAME, 'SELECT Product,
,CASE WHEN DateLastReceipt AS CHAR(10)) = ''0001-01-01''
THEN CURRENT_DATE
ELSE DateLastReceipt
END
FROM ProductTable')
Може да се наложи да промените CURRENT_DATE на CURRENT_TIMESTAMP и съставът на CASE зависи от вашия db сървър и вашите изисквания