Pregunta

Me postulo una consulta DATEDIFF simple, pero no parece que calcular los días correctamente o que estoy haciendo algo mal.

Si me quedo

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

¿Cuál es la correcta. Si cambio de mes en la primera fecha a febrero (02) consigo algo extraño.

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

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

Puede alguien ver lo que estoy haciendo mal o no es esto la función correcta que se debe usar si quiero que el Número 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.

¿Fue útil?

Solución

Te faltan las citas

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

Está obteniendo 20 porque

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

2008 - 1988 = 20

Otros consejos

Si ejecuta esta manera:

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

verá

1988  2008

que son los resultados o las operaciones con enteros que se pone aquí.

Incluya las constantes fecha en comillas simples:

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

--
-50

Funciona si escribe sus fechas con apóstrofes -

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

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

Esto lleva segunda fecha - primera fecha. No se olvide ''.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top