sql >> Databáze >  >> RDS >> Sqlserver

Při převodu dbtype_dbdate na datum došlo k chybě

doufám, že to pomůže (nepoužívám SQL Server 2012).
pokud vaše ODBC odkazuje na db2, pro časové období není podporováno, např. '0001-01-01', musíte přenést. Normálně to funguje.

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

Pokud přesto chcete výsledek jako datum, použijte CASE a nahraďte neplatné datum výchozím datem, např.

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

Možná budete muset změnit CURRENT_DATE na CURRENT_TIMESTAMP a složení CASE závisí na vašem db serveru a vašich požadavcích




  1. Máte již jiný mysqld server spuštěný na portu:3306 Ubuntu

  2. Jak zjistit, zda se někdo dívá na jeden ze záznamů ve vaší databázi?

  3. Jak získat celkový počet nalezených řádků bez zohlednění limitu v PDO?

  4. Entity Framework generuje short místo int