2010-03-25 18 views
5

Estoy ejecutando una consulta DATEDIFF simple pero no parece calcular los días correctamente o estoy haciendo algo mal.SQL DATEDIFF ¿No está funcionando?

Si me quedo

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

Qué es lo correcto. Si cambio el mes en la primera fecha a febrero (02) obtengo algo extraño.

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

¿Ahora no debería ser 48 o algo así?

¿Alguien puede ver lo que estoy haciendo mal o esta no es la función correcta para usar si quiero el No de días entre estas fechas?

He intentado tomar una fecha a partir de la otra:

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

Cualquier ayuda muy apreciada.

Gracias J.

cotizaciones
+0

@ James - no, no debería ser 48 ... que se supone que poner la fecha grande como el último parámetro. De lo contrario, el resultado es negativo. No olvides el "tampoco". Ver mi respuesta a continuación. – JonH

+0

No quise decir 48 exactamente "no debería ser 48 o algo así" hice un cálculo rápido en mi cabeza. Gracias por la ayuda sin embargo. – JBoom

Respuesta

4

Ha echado

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

Usted está recibiendo 20 porque

2010 - 1 - 1 = 2008 
2010 - 2 - 20 = 1988 

2008 - 1988 = 20 
+0

Vaya, qué plonker, cómo no lo conseguí ... gracias por la ayuda. – JBoom

1

Si ejecuta esta manera:

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

verás

1988 2008 

que son los resultados o las operaciones enteras que usted pone aquí.

encerrar los constantes fecha en comillas simples:

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

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

que se lleva segunda fecha - primera fecha. No olvides ''.

1

Funciona si escribe sus fechas con apóstrofes -

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

-41 
Cuestiones relacionadas