Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd konwersji dbtype_dbdate na datę

mam nadzieję, że to pomoże (nie używam SQL Server 2012).
jeśli ODBC łączy się z db2, dla zakresu dat nie jest obsługiwany, np. '0001-01-01', musisz rzucić. Normalnie to działa.

SELECT * 
FROM   OPENQUERY(LINKEDSERVERNAME, 'SELECT Product, 
                                       CAST(DateLastReceipt AS CHAR(10))
                                FROM   ProductTable')

Jeśli nadal chcesz, aby wynik był datą, po prostu użyj CASE i zamień nieprawidłową datę na datę domyślną, np.

SELECT *
FROM   OPENQUERY(LINKEDSERVERNAME, 'SELECT Product, 
                               ,CASE WHEN DateLastReceipt AS CHAR(10)) = ''0001-01-01''
                                       THEN CURRENT_DATE
                                     ELSE DateLastReceipt 
                                     END
                                FROM   ProductTable')

Być może trzeba będzie zmienić CURRENT_DATE na CURRENT_TIMESTAMP, a skład CASE zależy od serwera bazy danych i wymagań




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MS SQL - inny plan wykonania dla różnych schematów?

  2. Jak przekonwertować dane do formatu json w SQL Server 2008?

  3. Łączenie się z serwerem SQL z innego komputera

  4. serwer sql 'w' lub 'lub' - który jest najszybszy

  5. Jak odwoływać się do kluczy JSON zawierających znaki specjalne podczas korzystania z OPENJSON, JSON_QUERY i JSON_VALUE (SQL Server)