Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

función DATEDIFF

Estas en el tema de función DATEDIFF en el foro de SQL Server en Foros del Web. Hola utilizo la fucnion DATEDIFF para restar 2 fechas hasta no hay problema y me devuelve los dias correctamente los parametros que pason son fecha ...
  #1 (permalink)  
Antiguo 04/11/2010, 12:27
Avatar de andrew14  
Fecha de Ingreso: enero-2007
Ubicación: Colombia
Mensajes: 13
Antigüedad: 17 años, 10 meses
Puntos: 0
función DATEDIFF

Hola utilizo la fucnion DATEDIFF para restar 2 fechas hasta no hay problema y me devuelve los dias correctamente los parametros que pason son fecha y GETDATE()
la cuestion con el campo fecha es que los que no tienen fecha devuelve null y como yo lo exporto a excel y quisiera sababer como puedo renombrar los null por otro valor

mi funcion
DATEDIFF(DD,fecha,GETDATE())
he intentado hacer conversiones a traves de convert pero no me funciona

alguien me podria dar laguna idea

gracias
  #2 (permalink)  
Antiguo 04/11/2010, 14:04
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 4 meses
Puntos: 39
Respuesta: función DATEDIFF

Usa la funcion ISNULL.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 06/11/2010, 11:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: función DATEDIFF

isnull(DATEDIFF(DD,fecha,GETDATE()) ,'tu_valor')

Saludos!
  #4 (permalink)  
Antiguo 06/11/2010, 16:53
Avatar de andrew14  
Fecha de Ingreso: enero-2007
Ubicación: Colombia
Mensajes: 13
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: función DATEDIFF

Hola si utilizo
ISNULL(DATEDIFF(DD,fecha,GETDATE()),'SINACCESO')

me tira

Error de conversión al convertir el valor varchar 'SINACCESO' al tipo de datos int.

si intento convertir las fechas

ISNULL(DATEDIFF(DD,convert(varchar,fecha),convert( varchar,GETDATE())),'SINACCESO') as fecha

me tira el mismo error

Error de conversión al convertir el valor varchar 'SINACCESO' al tipo de datos int.


consulta sql

SELECT
ISNULL(DATEDIFF(DD,convert(varchar,fecha),convert( varchar,GETDATE())),'SINACCESO') as fecha
FROM Tbl_Estudiantes


gracias por la ayuda
  #5 (permalink)  
Antiguo 08/11/2010, 09:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: función DATEDIFF

Hola andrew14, el problema es que estás tratando de combinar valores enteros con valores tipo caracter. La función datediff regresa un valor entero, pero tú en la condición del isnull estás tratando de asignar un valor tipo cadena, puedes solucionar esto de dos maneras:

Código SQL:
Ver original
  1. --declaramos una variable tipo fecha.
  2. DECLARE @fecha datetime;
  3.  
  4. --si la fecha es nula
  5. --Asignando un valor entero (0) a tu función isnull
  6. SELECT ISNULL(DATEDIFF(DD, @fecha, GETDATE()), 0)
  7. --Convirtiendo el valor entero que regresa datediff a tipo cadena
  8. SELECT ISNULL(CAST(DATEDIFF(DD, @fecha, GETDATE()) AS VARCHAR), 'VALOR QUE QUIERAS ASIGNARLE')
  9.  
  10. --Si la fecha no es nula
  11. SET @fecha = '20101101'
  12. --Asignando un valor entero (0) a tu función isnull
  13. SELECT ISNULL(DATEDIFF(DD, @fecha, GETDATE()), 0)
  14. --Convirtiendo el valor entero que regresa datediff a tipo cadena
  15. SELECT ISNULL(CAST(DATEDIFF(DD, @fecha, GETDATE()) AS VARCHAR), 'VALOR QUE QUIERAS ASIGNARLE')

Saludos
Leo
  #6 (permalink)  
Antiguo 08/11/2010, 21:48
Avatar de andrew14  
Fecha de Ingreso: enero-2007
Ubicación: Colombia
Mensajes: 13
Antigüedad: 17 años, 10 meses
Puntos: 0
De acuerdo Respuesta: función DATEDIFF

Hola leonardo_josue muchas gracias sos el mejor
Es una fantastica explicación
de nuevo gracias

Etiquetas: datediff
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:03.