Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка при конвертирането на dbtype_dbdate в дата

надявам се това да помогне (не използвам 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 сървър и вашите изисквания




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server търси колона по име

  2. Преобразувайте smallint във време

  3. Включване на таблици и схеми при изброяване на колоните за идентичност в база данни на SQL Server

  4. Тройно вътрешно свързване с над 10 000 реда и приложение за изчисления на asp

  5. Използване на Intel Optane Storage за SQL Server