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

Fechas en SQL

Estas en el tema de Fechas en SQL en el foro de SQL Server en Foros del Web. Estimados Buenos Días, tengo el siguiente planteo, que no pude resolver. Problema: Necesito listar todas las facturas, que la fecha de emisión supere los 28 ...
  #1 (permalink)  
Antiguo 17/01/2013, 05:22
 
Fecha de Ingreso: octubre-2010
Ubicación: Palermo
Mensajes: 55
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Fechas en SQL

Estimados Buenos Días, tengo el siguiente planteo, que no pude resolver.

Problema: Necesito listar todas las facturas, que la fecha de emisión supere los 28 días de impaga.
Para esto quise utilizar (2) campos, estado y fecha_emis.

Escenario:

Tabla: Facturas
Estructura: id, t_compro, estado, fecha_emis, n_compro, total, talonario.

El campo fecha_emis, contiene la fecha que fue emitida la factura.
El campo estado, contiene si esta impaga "IMP" o cancelada "CAN".

En principio realice lo siguiente:

select a.ncompro, a.fecha_emis, a.estado from facturas as a
where (( a.estado='IMP' and ( DATEDIFF ( day , getdate() , a.fecha_emis )>28))

resultado no me muestra ninguna factura.
Desde ya cualquier idea se .

Muchas Gracias a todos.
Estoy utilizando SQL Express 2005

Gustavo
__________________
-------------------------------
Gustavo
[email protected]
cncnet.com.ar
  #2 (permalink)  
Antiguo 17/01/2013, 06:20
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Fechas en SQL

Hola Gustavo, intenta algo asi:

select * from facturas where estado = 'IMP' and fecha_emis < getdate() - 28;

o tambien:

select * from facturas where estado = 'IMP' and DATEDIFF (day, fecha_emis, getdate()) > 28;

creo que la segunda es mas exacta pero ambas deberían funcionar bien. Lo que tu hiciste no te retorna nada ya que la funcion datediff se utiliza tomando primero el valor de fecha inicial y despues el de la fecha final, osea que en vez de esto:
DATEDIFF( day , getdate() , a.fecha_emis ) >28
debes usarlo al revés DATEDIFF( day, a.fecha_emis, getdate()) >28

Saludos

Última edición por leo_acn; 17/01/2013 a las 06:41
  #3 (permalink)  
Antiguo 18/01/2013, 04:39
 
Fecha de Ingreso: octubre-2010
Ubicación: Palermo
Mensajes: 55
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Fechas en SQL

ok, gracias , voy a probarlo y te cuento.

Saludos.
Gustavo
__________________
-------------------------------
Gustavo
[email protected]
cncnet.com.ar

Etiquetas: datediff, select
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 20:06.