Мне нравится новый тип данных DATE в SQL Server 2008, но когда я сравниваю поле DATE с полем DATETIME на связанном сервере (в данном случае SQL 2005), например:
DECLARE @MyDate DATE
SET @MyDate = CONVERT(DATE, GETDATE())
SELECT *
FROM MySQL2005LinkedServer.SomeDB.dbo.SomeTable
WHERE SomeDatetimeField < @MyDate
Я получаю эту ошибку:
OLE DB provider "SQLNCLI10" returned message "Unspecified error".
OLE DB provider "SQLNCLI10" returned message "The scale is invalid.".
«Масштаб недействителен», очевидно, потому что собственный клиент передает тип данных DATE обратно на связанный сервер, и, поскольку это SQL 2005, он не знает, что с ним делать. Выполнение этого же запроса к серверу 2008 прекрасно работает - SQL Server может без проблем сравнивать типы данных DATE и DATETIME.
Вот мой вопрос - есть ли причина, по которой собственный клиент автоматически не преобразует значение DATE «2009-11-09» в DATETIME «2009-11-09 00: 00: 00.000» чтобы предыдущая версия SQL Server не подавилась им?