2010-03-25 15 views
5

Sto eseguendo una semplice query DATEDIFF ma non sembra calcolare correttamente i giorni o sto facendo qualcosa di sbagliato.SQL DATEDIFF Non funziona?

Se corro

PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01) 
RETURN 19 

che è corretto. Se cambio il mese nella prima data 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 cosa sto facendo male o non è questa la funzione corretta da utilizzare se voglio il No di giorni tra queste date?

Ho cercato di prendere una data dall'altra:

PRINT (2010-02-20) - (2010-01-01) 
RETURN -20 

Qualsiasi aiuto molto apprezzato.

Grazie J.

citazioni
+0

@James - no, non dovrebbe essere 48 ... si suppone di mettere la data più grande come l'ultimo parametro. Altrimenti il ​​risultato è negativo. Non dimenticare nemmeno l'''. Vedi la mia risposta qui sotto. – JonH

+0

Non intendevo dire esattamente 48 'non dovrebbe essere 48 o qualcosa' ho appena fatto un rapido calcolo nella mia testa. Grazie per l'aiuto però. – JBoom

risposta

4

non trovi il

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 
+0

oops what a plonker, come ho fatto a non ottenerlo .... grazie per l'aiuto però. – JBoom

1

Se si esegue in questo modo:

SELECT 2010-02-20, 2010-01-01 

vedrai

1988 2008 

quali sono i risultati o le operazioni su interi che vengono inserite qui.

racchiudere il costanti data in apici:

SELECT DATEDIFF(Day, '2010-02-20', '2010-01-01') 

-- 
-50 
1
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20') 

che prende 2 ° data - prima data. Non dimenticare ''.

1

Funziona se vi circondano le date con gli apostrofi -

SELECT DATEDIFF(day, '2010-02-20', '2010-01-10') 

-41