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

select para mostrar fecha determinada

Estas en el tema de select para mostrar fecha determinada en el foro de SQL Server en Foros del Web. hola necesito hacer un select en sql server 2005 que muestre si existe información en una tabla con los datos de hoy y los 3 ...
  #1 (permalink)  
Antiguo 13/01/2011, 15:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 14 años
Puntos: 0
select para mostrar fecha determinada

hola necesito hacer un select en sql server 2005 que muestre si existe información en una tabla con los datos de hoy y los 3 días siguientes (para que un sistema me alerte si hay medicamentos por vencer)

ya, creo que la consulta es asi....

Select * from medicamentos where fvencimiento >=


y ahí quedo jajaja, creo que hay que ocupar un datadiff, pero no me ha resultado lo que he intentado >.<


ayuda plz!!!
  #2 (permalink)  
Antiguo 13/01/2011, 15:56
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: select para mostrar fecha determinada

Código SQL:
Ver original
  1. SELECT * FROM medicamentos WHERE datediff(d,getdate(),fvencimiento) <= 3
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 13/01/2011, 16:45
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: select para mostrar fecha determinada

Buenas tardes Compañer@s.

Tengo una observación en cuanto a la consulta que da el compañero flaviovich que igual y no es muy relevante, pero que y hay que tomar en cuenta para aquellos que no lo saben o no lo recuerdan: cuando la función datediff recibe como fecha final una fecha menor a la fecha de inicio regresa un número negativo

Código SQL:
Ver original
  1. SELECT datediff(d, getdate(), '2011-01-01');
  2. -- Regresa un -12

Por lo tanto todas las fechas anteriores a la fecha actual también se incluirían en la consulta

Código SQL:
Ver original
  1. DECLARE @Medicamentos TABLE (id INT, nombre VARCHAR(10), fechaVencimiento datetime)
  2. INSERT INTO @Medicamentos VALUES (1, 'Uno', '2011-01-10 17:14:21')
  3. INSERT INTO @Medicamentos VALUES (2, 'Dos', '2011-01-11 13:51:01')
  4. INSERT INTO @Medicamentos VALUES (3, 'Tres', '2011-01-12 23:59:59')
  5. INSERT INTO @Medicamentos VALUES (4, 'Cuatro', '2011-01-13 00:00:00')
  6. INSERT INTO @Medicamentos VALUES (5, 'Cinco', '2011-01-14 05:01:34')
  7. INSERT INTO @Medicamentos VALUES (6, 'Seis', '2011-01-15 00:00:01')
  8. INSERT INTO @Medicamentos VALUES (7, 'Siete', '2011-01-16 23:59:59')
  9. INSERT INTO @Medicamentos VALUES (8, 'Ocho', '2011-01-17 00:00:00')
  10. SELECT * FROM @medicamentos
  11. WHERE datediff(d,getdate(),fechaVencimiento) <= 3

El resultado de esto sería:

Código:
1|Uno|2011-01-10 17:14:21.000
2|Dos|2011-01-11 13:51:01.000
3|Tres|2011-01-12 23:59:59.000
4|Cuatro|2011-01-13 00:00:00.000
5|Cinco|2011-01-14 05:01:34.000
6|Seis|2011-01-15 00:00:01.000
7|Siete|2011-01-16 23:59:59.000
Puedes solucionarlo así:

Código SQL:
Ver original
  1. SELECT * FROM @medicamentos WHERE datediff(d,getdate(),fechaVencimiento)
  2. BETWEEN 0 AND 3
  3. --O comparando los rangos de fecha >= y <=
  4. SELECT * FROM @Medicamentos
  5. WHERE
  6. CONVERT(datetime, DATEDIFF(d, 0, fechaVencimiento), 102) >=
  7. CONVERT(datetime, DATEDIFF(d, 0, getdate()), 102) AND
  8. CONVERT(datetime, DATEDIFF(d, 0, fechaVencimiento), 102) <=
  9. CONVERT(datetime, DATEDIFF(d, 0, getdate() + 3), 102)

El resultado de ambos query's sería

Código:
4|Cuatro|2011-01-13 00:00:00.000
5|Cinco|2011-01-14 05:01:34.000
6|Seis|2011-01-15 00:00:01.000
7|Siete|2011-01-16 23:59:59.000
Como comenté, igual y no es muy relevante, pero en lo particular ya he tenido algunos problemas por olvidar este detalle.

Saludos
Leo.
  #4 (permalink)  
Antiguo 13/01/2011, 17:19
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: select para mostrar fecha determinada

Es valido lo que dice Leo, te ganaste un poco de Karma jeje.
Que tal esta forma?
Código SQL:
Ver original
  1. SELECT * FROM medicamentos WHERE dateadd(d, -3, fvencimiento) <= getdate()
Solo hay que tener en cuenta si el campo datetime usa horas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 15/01/2011, 17:57
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 14 años
Puntos: 0
Respuesta: select para mostrar fecha determinada

MUCHAS GRACIAS!!!

de verdad se los agradezco mucho :)

Etiquetas: select, fechas
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 12:49.