SQL DATEDIFF Non funziona?
Domanda
Sono in esecuzione di una query semplice DATEDIFF ma non sembra per calcolare i giorni correttamente o sto facendo qualcosa di sbagliato.
Se corro
PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19
che è corretto. Se cambio il mese nel primo appuntamento a febbraio (02) ottengo qualcosa di strano.
PRINT DATEDIFF(Day, 2010-02-20, 2010-01-01)
RETURN 20
Ora non dovrebbe essere 48 o qualcosa del genere?
Qualcuno può vedere quello che sto facendo male o è questo non la funzione corretta da utilizzare se voglio il No di giorni tra queste date?
Ho provato a prendere uno risalgono l'altro:
PRINT (2010-02-20) - (2010-01-01)
RETURN -20
Qualsiasi aiuto molto apprezzato.
Grazie J.
Soluzione
Ti manca citazioni
PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')
Stai diventando 20 a causa
2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988
2008 - 1988 = 20
Altri suggerimenti
Se si esegue in questo modo:
SELECT 2010-02-20, 2010-01-01
si vedrà
1988 2008
che sono risultati o le operazioni di interi che si mette qui.
Racchiudere le costanti di data in apici:
SELECT DATEDIFF(Day, '2010-02-20', '2010-01-01')
--
-50
Funziona se vi circondano le date con gli apostrofi -
SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')
-41
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20')
Che prende 2 ° data - prima data. Non dimenticare ''.