La relazione tra DATETIME & INTEGER e DATA & INTEGER è coerente?Perché il numero intero può essere sottratto da DATETIME ma non il tipo DATE
Esegue bene:
DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;
Come fa questo:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;
Questo errori:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;
posso sottrarre in modo sicuro un tipo integer
da un datetime
ma non da un date
.
Qual è il motivo di questo comportamento?
Il cast implicito da 'int' a' DateTime' risale ai giorni di Sybase. Credo che per i nuovi tipi di dati hanno deciso di non farlo come una possibile causa di bug (inserendo accidentalmente valori interi in una colonna 'datetime' e non essendo avvisati del problema). Una richiesta relativa all'elemento Connect si è lamentata delle conversioni implicite [Aggiungi controlli facoltativi per uno sviluppo più affidabile] (http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=260762) –
@MartinSmith upped - grazie per informazioni – whytheq
@ MartinSmith - hai votato per chiudere? chi ha fatto non ha lasciato alcun commento; bello vedere un commento in quanto dà la possibilità di modificare l'OP – whytheq