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.

È stato utile?

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 ''.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top