Explizite Konvertierung von date-Datentyp int ist nicht erlaubt

Ich versuche zu berechnen, ALTER der Verträge, jedoch bin ich immer die Fehler

Explizite Konvertierung von date-Datentyp int ist nicht zulässig

Dies ist mein code:

SELECT 
    Contract_hist.*,
    IB.*,
    CAST((CASE
             WHEN (CAST(CONVERT(INT, Setup.[Start]) - CONVERT(INT,[IB].[Install_Date])) AS INT))/365 <= 0 
                THEN 0  
             WHEN (CAST(CONVERT(INT, Setup.[Start]) - CONVERT(INT,[IB].[Install_Date])) AS INT)) / 365 > 0 
                THEN (CAST(CONVERT(INT, Setup.[Start]) CONVERT(INT,[IB].[Install_Date])) AS INT)) / 365 
          END) AS INT) AS AGE
FROM 
    Setup, Contract_hist
INNER JOIN 
    IB ON Contract_hist.[System No] = IB.System_ID

Wo "Setup.[Start]" & "[IB].[Install_Date]" sind datetime2 Werte.

Bezieht sich das? stackoverflow.com/questions/5505935/... "umwandeln in ein int funktioniert nicht mehr in neueren Versionen von sql server". versuchen Sie es mit DATEDIFF(dd, '12/30/1899', mydatefield).
Schlechte Gewohnheiten zu treten : mit old-style-JOINs, das im alten Stil Komma-getrennte Liste von Tabellen - Stil ersetzt wurde mit dem richtige ANSI JOIN syntax in ANSI-92 SQL-Standard (25 Jahre her), und seine Verwendung wird abgeraten. Und sollten Sie definitiv NICHT mix der beiden Stile !
Also, was schlagen Sie vor? Welche Art von join sollte ich verwenden?

InformationsquelleAutor BTurkeli | 2017-04-02

Schreibe einen Kommentar