Ist die Beziehung zwischen DATETIME & INTEGER und DATE & INTEGER konsistent?Warum kann Ganzzahl von DATETIME subtrahiert werden, aber nicht vom Typ DATE
Dies führt fein:
DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;
Wie dies tut:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;
Diese Fehler:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;
ich sicher ein integer
Typ von einem datetime
aber nicht von einem subtrahieren kann date
.
Was ist der Grund für dieses Verhalten?
Die implizite Umwandlung von 'int' zu' datetime' geht zurück auf Sybase Tage. Ich denke, für die neuen Datentypen haben sie sich entschieden, dies nicht als mögliche Ursache für Bugs zu tun (versehentliches Einfügen von Integer-Werten in eine "datetime" -Spalte und keine Benachrichtigung über das Problem). Eine verwandte Connect Item-Anforderung, die sich über implizite Conversions beschwert [Hinzufügen optionaler Checks für eine robustere Entwicklung] (http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=260762) –
@MartinSmith updated - vielen Dank für die Information – whytheq
@MartinSmith - hast du gewählt zu schließen? Wer auch immer getan hat, hat keinen Kommentar hinterlassen; schön, einen Kommentar zu sehen, da es die Möglichkeit gibt, das OP – whytheq